bilibili-backup/app/interface/main/web-show/http/http.go
2019-04-22 02:59:20 +00:00

92 lines
2.4 KiB
Go

package http
import (
"go-common/app/interface/main/web-show/conf"
"go-common/app/interface/main/web-show/service/job"
"go-common/app/interface/main/web-show/service/operation"
res "go-common/app/interface/main/web-show/service/resource"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/auth"
"go-common/library/net/http/blademaster/middleware/cache"
"go-common/library/net/http/blademaster/middleware/cache/store"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
jobSvc *job.Service
opSvc *operation.Service
vfySvr *verify.Verify
authSvr *auth.Auth
resSvc *res.Service
// cache components
cacheSvr *cache.Cache
deg *cache.Degrader
)
// Init int http service
func Init(c *conf.Config) {
initService(c)
// init external router
cacheSvr = cache.New(store.NewMemcache(c.DegradeConfig.Memcache))
deg = cache.NewDegrader(c.DegradeConfig.Expire)
engineOut := bm.DefaultServer(c.BM.Outer)
outerRouter(engineOut)
// init Outer serve
if err := engineOut.Start(); err != nil {
log.Error("engineOut.Start error(%v)", err)
panic(err)
}
engineLocal := bm.DefaultServer(c.BM.Local)
localRouter(engineLocal)
// init Outlocaler serve
if err := engineLocal.Start(); err != nil {
log.Error("engineLocal.Start error(%v)", err)
panic(err)
}
}
// initService init service
func initService(c *conf.Config) {
authSvr = auth.New(c.Auth)
vfySvr = verify.New(c.Verify)
jobSvc = job.New(c)
opSvc = operation.New(c)
resSvc = res.New(c)
}
//CloseService close all service
func CloseService() {
jobSvc.Close()
opSvc.Close()
}
// outerRouter init outer router api path.
func outerRouter(e *bm.Engine) {
// init api
e.Ping(ping)
group := e.Group("/x/web-show", bm.CORS())
{
group.GET("/join", join)
group.GET("/notice", notice)
group.GET("/promote", promote)
group.GET("/res/loc", authSvr.Guest, cacheSvr.Cache(deg.Args("id", "pf"), nil), resource)
group.GET("/res/locs", authSvr.Guest, cacheSvr.Cache(deg.Args("ids", "pf"), nil), resources)
group.GET("/ad/video", authSvr.Guest, advideo)
group.GET("/archive/relation", relation)
group.GET("/urls", vfySvr.Verify, urlMonitor)
}
e.GET("/x/ad/video", authSvr.Guest, advideo)
}
// innerRouter init local router api path.
func localRouter(e *bm.Engine) {
group := e.Group("/x/web-show", bm.CORS())
{
group.GET("/monitor/ping", ping)
group.GET("/version", version)
group.GET("/gray", grayRate)
}
}