go-common/app/interface/openplatform/article/conf/conf.go
2019-04-22 18:49:16 +08:00

268 lines
6.0 KiB
Go

package conf
import (
"errors"
"flag"
"go-common/app/interface/openplatform/article/model"
"go-common/library/cache/memcache"
"go-common/library/cache/redis"
"go-common/library/conf"
"go-common/library/database/sql"
ecode "go-common/library/ecode/tip"
"go-common/library/log"
"go-common/library/log/infoc"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/antispam"
"go-common/library/net/http/blademaster/middleware/auth"
"go-common/library/net/http/blademaster/middleware/verify"
"go-common/library/net/rpc"
"go-common/library/net/rpc/warden"
"go-common/library/net/trace"
"go-common/library/queue/databus"
"go-common/library/time"
"github.com/BurntSushi/toml"
hbase "go-common/library/database/hbase.v2"
)
// global var
var (
confPath string
client *conf.Client
// Conf config
Conf = &Config{}
)
// Config config set
type Config struct {
// base
// elk
Log *log.Config
// BM
BM *bm.ServerConfig
// HTTPClient .
HTTPClient *bm.ClientConfig
MessageHTTPClient *bm.ClientConfig
// tracer
Tracer *trace.Config
// auth
Auth *auth.Config
// verify
Verify *verify.Config
// redis
Redis *redis.Config
// memcache
Memcache *Memcache
// MySQL
MySQL MySQL
// rpc
AccountRPC *rpc.ClientConfig
TagRPC *rpc.ClientConfig
FavRPC *rpc.ClientConfig
ArcRPC *rpc.ClientConfig
CoinRPC *rpc.ClientConfig
ResRPC *rpc.ClientConfig
ThumbupRPC *rpc.ClientConfig
FilterRPC *rpc.ClientConfig
HistoryRPC *rpc.ClientConfig
SearchRPC *warden.ClientConfig
// databus
StatDatabus *databus.Config
// infoc log2
DisplayInfoc *infoc.Config
ClickInfoc *infoc.Config
AIClickInfoc *infoc.Config
ShowInfoc *infoc.Config
CheatInfoc *infoc.Config
// ecode
Ecode *ecode.Config
//RankCategories .
RankCategories []*model.RankCategory
//Message
Message Message
Cards Cards
//hbase
HBase *hbase.Config
// BFS
BFS *BFS
// Antispam
Antispam *antispam.Config
// DegradeConfig
DegradeConfig *DegradeConfig
// artcile
Article Article
//Berserker
Berserker Berserker
//Sentinel
Sentinel *Sentinel
}
//Sentinel .
type Sentinel struct {
EnableSentinel int `json:"enableSentinel"`
DurationSample int `json:"durationSample"`
MonitorCountSample int `json:"monitorCountSample"`
MonitorRateSample int `json:"monitorRateSample"`
DebugSample int `json:"debugSample"`
}
// Berserker .
type Berserker struct {
AppKey string
AppSecret string
URL string
}
// Memcache config
type Memcache struct {
*memcache.Config
ArticleExpire time.Duration
StatsExpire time.Duration
LikeExpire time.Duration
CardsExpire time.Duration
SubmitExpire time.Duration
ListArtsExpire time.Duration
ListExpire time.Duration
ArtListExpire time.Duration
UpListsExpire time.Duration
ListReadExpire time.Duration
HotspotExpire time.Duration
AuthorExpire time.Duration
ArticlesIDExpire time.Duration
ArticleTagExpire time.Duration
UpStatDailyExpire time.Duration
}
// MySQL config
type MySQL struct {
Article *sql.Config
}
// Cards config
type Cards struct {
TicketURL string
MallURL string
AudioURL string
BangumiURL string
}
// BFS bfs config
type BFS struct {
Timeout time.Duration
MaxFileSize int
Bucket string
URL string
Method string
Key string
Secret string
}
// DegradeConfig .
type DegradeConfig struct {
Expire int32
Memcache *memcache.Config
}
// Article article config
type Article struct {
ExpireUpper time.Duration
ExpireArtLikes time.Duration
ExpireSortArts time.Duration
TTLSortArts time.Duration
ExpireRank time.Duration
TTLRank time.Duration
ExpireMaxLike time.Duration
ExpireHotspot time.Duration
CreationDefaultSize int
CreationMaxSize int
UpperDraftLimit int
UpperArticleLimit int
UpdateRecommendsInteval time.Duration
MaxRecommendPnSize int64
MaxRecommendPsSize int64
MaxUpperListPsSize int64
MaxArchives int
MaxComplaintReasonLimit int64
MaxArticleMetas int
MaxApplyContentLimit int64
MaxApplyCategoryLimit int64
MaxLikeMidLen int
RecommendAidLen int
SortLimitTime time.Duration
UpdateBannersInteval time.Duration
BannerIDs []int
ActBannerIDs []int
RecommendRegionLen int
SkyHorseRecommendRegionLen int
RankHost string
MessageMids []int64
MaxContentSize int
MaxContentLength int
MinContentLength int
ActAddURI string
ActDelURI string
ActURI string
ListLimit int
ListArtsLimit int
AppCategoryName string
AppCategoryURL string
SkyHorseURL string
SkyHorseGray []int64
SkyHorseGrayUsers []int64
ListDefaultImage string
RecommendAuthors int
ExpireReadPing time.Duration
ExpireReadSet time.Duration
Media []int64
EditTimes int
RecommendAuthorsURL string
}
// Message .
type Message struct {
URL string
MC string
}
func init() {
flag.StringVar(&confPath, "conf", "", "default config path")
}
// Init init conf
func Init() error {
if confPath != "" {
return local()
}
return remote()
}
func local() (err error) {
_, err = toml.DecodeFile(confPath, &Conf)
return
}
func remote() (err error) {
if client, err = conf.New(); err != nil {
return
}
err = load()
return
}
func load() (err error) {
var (
s string
ok bool
tmpConf *Config
)
if s, ok = client.Toml2(); !ok {
return errors.New("load config center error")
}
if _, err = toml.Decode(s, &tmpConf); err != nil {
return errors.New("could not decode config")
}
*Conf = *tmpConf
return
}