bilibili-backup/app/service/main/up/server/http/http.go
2019-04-22 02:59:20 +00:00

128 lines
3.2 KiB
Go

package http
import (
uphttp "go-common/app/service/main/up/api/v1"
"go-common/app/service/main/up/conf"
"go-common/app/service/main/up/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
idfSvc *verify.Verify
//Svc service.
Svc *service.Service
authSrc *permit.Permit
)
// Init init account service.
func Init(c *conf.Config, s *service.Service) {
// service
initService(c, s)
// init internal router
innerEngine := bm.DefaultServer(c.BM.Inner)
setupInnerEngine(innerEngine)
registerUpEngine(innerEngine)
uphttp.RegisterUpBMServer(innerEngine, s)
// init internal server
if err := innerEngine.Start(); err != nil {
log.Error("innerEngine.Start error(%v)", err)
panic(err)
}
}
func initService(c *conf.Config, s *service.Service) {
idfSvc = verify.New(nil)
Svc = s
authSrc = permit.New(c.Auth)
Svc.SetAuthServer(authSrc)
}
// registerUpEngine .
func registerUpEngine(e *bm.Engine) {
e.Inject("^/x/internal/uper/archive", idfSvc.Verify)
}
// innerRouter
func setupInnerEngine(e *bm.Engine) {
// monitor ping
e.Ping(ping)
e.Register(disRegister)
// base
var base, admin *bm.RouterGroup
if conf.Conf.IsTest {
base = e.Group("/x/internal/uper")
admin = e.Group("/x/admin/uper")
} else {
base = e.Group("/x/internal/uper", idfSvc.Verify)
// 现在只要登录,默认放过
admin = e.Group("/x/admin/uper", authSrc.Verify(), authSrc.Permit("PRIORITY_UP"))
}
{
base.POST("/register", register)
base.GET("/info", info)
base.GET("/all", all)
base.GET("/special", specialUps)
base.GET("/stat/base", baseStat)
base.GET("/info/active", active)
base.GET("/info/actives", actives)
//播放器关注按钮开关
base.POST("/switch/set", switchSet)
base.GET("/switch", upSwitch)
//人物卡片
base.GET("/card/all", listCardBase)
base.GET("/card/info", getCardInfo)
base.GET("/card/info/list", listCardDetail)
base.GET("/card/info/list_by_mids", listCardByMids)
// 下面接口在admin中也有
base.GET("/special/get", specialGet)
base.GET("/group/get", getGroup)
base.GET("/special/get_by_mid", specialGetByMid)
// list_up
base.GET("/list_up", listUp)
}
admin.GET("/special/get", specialGet)
admin.GET("/special/get_by_mid", specialGetByMid)
admin.POST("/special/delete", specialDel)
admin.POST("/special/add", specialAdd)
admin.POST("/special/edit", specialEdit)
admin.GET("/group/get", getGroup)
admin.POST("/group/add", authSrc.Permit("UPGROUP_ADD"), addGroup)
admin.POST("/group/update", updateGroup)
admin.POST("/group/delete", authSrc.Permit("UPGROUP_ADD"), removeGroup)
}
// ping check server ok.
func ping(ctx *bm.Context) {
if err := Svc.Ping(ctx); err != nil {
ctx.Error = err
ctx.AbortWithStatus(503)
}
}
// disRegister check server ok.
func disRegister(ctx *bm.Context) {
ctx.JSON(map[string]interface{}{}, nil)
}
//bmGetStringOrDefault get string
func bmGetStringOrDefault(c *bm.Context, key string, defaul string) (value string, exist bool) {
i, exist := c.Get(key)
if !exist {
value = defaul
return
}
value, exist = i.(string)
if !exist {
value = defaul
}
return
}