2019-04-22 02:59:20 +00:00

116 lines
3.4 KiB
Go

package http
import (
"net/http"
"strconv"
"go-common/app/service/main/favorite/conf"
"go-common/app/service/main/favorite/service"
"go-common/library/log"
"go-common/library/log/anticheat"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/antispam"
"go-common/library/net/http/blademaster/middleware/supervisor"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
favSvc *service.Service
verifySvc *verify.Verify
antispamM *antispam.Antispam
supervisorM *supervisor.Supervisor
collector *anticheat.AntiCheat
)
// Init init router
func Init(c *conf.Config, svc *service.Service) {
verifySvc = verify.New(c.Verify)
antispamM = antispam.New(c.Antispam)
supervisorM = supervisor.New(c.Supervisor)
favSvc = svc
if c.Infoc2 != nil {
collector = anticheat.New(c.Infoc2)
}
// init outer router
engineOut := bm.DefaultServer(c.BM)
internalRouter(engineOut)
// init serve
if err := engineOut.Start(); err != nil {
log.Error("engineOut.Start() error(%v)", err)
panic(err)
}
}
// internalRouter init internal router api path
func internalRouter(e *bm.Engine) {
// init api
e.Ping(ping)
e.Register(register)
favV3 := e.Group("/x/internal/v3/fav")
{
favV3.GET("", verifySvc.Verify, setMid, Favorites)
favV3.GET("/test", setMid, Favorites)
favV3.GET("/tlists", verifySvc.Verify, setMid, tlists)
favV3.GET("/recents", verifySvc.VerifyUser, recentFavs)
favV3.GET("/batch", verifySvc.Verify, batchFavs)
favV3.POST("/add", verifySvc.VerifyUser, addFav)
favV3.POST("/del", verifySvc.VerifyUser, delFav)
favV3.POST("/madd", verifySvc.VerifyUser, multiAddFavs)
favV3.POST("/mdel", verifySvc.VerifyUser, multiDelFavs)
favV3.POST("/move", verifySvc.VerifyUser, moveFavs)
favV3.POST("/copy", verifySvc.VerifyUser, copyFavs)
favV3.GET("/favored", verifySvc.VerifyUser, isFavored)
favV3.GET("/favoreds", verifySvc.VerifyUser, isFavoreds)
favV3.GET("/users", verifySvc.Verify, userList)
favV3.GET("/count", verifySvc.Verify, oidCount)
favV3.GET("/counts", verifySvc.Verify, oidsCount)
favV3.GET("/default", verifySvc.VerifyUser, inDefaultFolder)
}
folderV3 := e.Group("/x/internal/v3/fav/folder")
{
folderV3.GET("", verifySvc.Verify, setMid, userFolders)
folderV3.GET("/multi", verifySvc.Verify, folders)
folderV3.GET("/info", verifySvc.Verify, folderInfo)
folderV3.GET("/count", verifySvc.Verify, cntUserFolders)
folderV3.POST("/add", verifySvc.VerifyUser, addFolder)
folderV3.POST("/update", verifySvc.VerifyUser, updateFolder)
folderV3.POST("/del", verifySvc.VerifyUser, delFolder)
folderV3.POST("/rename", verifySvc.VerifyUser, renameFolder)
folderV3.POST("/public", verifySvc.VerifyUser, upAttrFolder)
folderV3.POST("/sort", verifySvc.VerifyUser, sortFolders)
folderV3.GET("/cleaned", verifySvc.VerifyUser, isCleaned)
folderV3.POST("/clean", verifySvc.VerifyUser, cleanInvalidFavs)
}
}
func setMid(c *bm.Context) {
var (
err error
mid int64
)
req := c.Request
midStr := req.Form.Get("mid")
if midStr != "" {
mid, err = strconv.ParseInt(midStr, 10, 64)
if err != nil {
c.JSON(nil, err)
c.Abort()
return
}
}
c.Set("mid", mid)
}
// ping check server ok.
func ping(c *bm.Context) {
if err := favSvc.Ping(c); err != nil {
log.Error("favorite http service ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
// register check server ok.
func register(c *bm.Context) {
c.JSON(map[string]interface{}{}, nil)
}