139 lines
3.1 KiB
Go
139 lines
3.1 KiB
Go
|
package http
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
|
||
|
grpc "go-common/app/service/bbq/recsys-recall/api/grpc/v1"
|
||
|
"go-common/app/service/bbq/recsys-recall/conf"
|
||
|
"go-common/app/service/bbq/recsys-recall/service"
|
||
|
"go-common/app/service/bbq/recsys-recall/service/index"
|
||
|
"go-common/library/log"
|
||
|
bm "go-common/library/net/http/blademaster"
|
||
|
"go-common/library/net/http/blademaster/binding"
|
||
|
"go-common/library/net/http/blademaster/middleware/verify"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
srv *service.Service
|
||
|
vfy *verify.Verify
|
||
|
)
|
||
|
|
||
|
// Init init
|
||
|
func Init(c *conf.Config) {
|
||
|
srv = service.New(c)
|
||
|
vfy = verify.New(c.Verify)
|
||
|
engine := bm.DefaultServer(c.BM)
|
||
|
route(engine)
|
||
|
if err := engine.Start(); err != nil {
|
||
|
log.Error("bm Start error(%v)", err)
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func route(e *bm.Engine) {
|
||
|
e.Ping(ping)
|
||
|
e.Register(register)
|
||
|
g := e.Group("/bbq/internal/recall")
|
||
|
{
|
||
|
g.GET("/start", vfy.Verify, howToStart)
|
||
|
g.GET("/forward_index", forwardIndex)
|
||
|
g.GET("/inverted_index", invertedIndex)
|
||
|
g.GET("/recall", recall)
|
||
|
g.GET("/videos", videosByIndex)
|
||
|
g.POST("/new_income", newIncomeVideos)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func forwardIndex(c *bm.Context) {
|
||
|
args := struct {
|
||
|
Svid uint64 `form:"svid" json:"svid" validate:"required"`
|
||
|
}{}
|
||
|
|
||
|
var err error
|
||
|
if err = c.Bind(&args); err != nil {
|
||
|
log.Errorv(*c, log.KV("log", err))
|
||
|
return
|
||
|
}
|
||
|
if res := index.Index.Get(args.Svid); res != nil {
|
||
|
c.String(0, res.String())
|
||
|
return
|
||
|
}
|
||
|
|
||
|
c.String(0, "error: %v", err)
|
||
|
}
|
||
|
|
||
|
func invertedIndex(c *bm.Context) {
|
||
|
c.JSON(nil, nil)
|
||
|
}
|
||
|
|
||
|
func recall(c *bm.Context) {
|
||
|
args := struct {
|
||
|
MID int64 `json:"mid" form:"mid"`
|
||
|
BUVID string `json:"buvid" form:"buvid"`
|
||
|
TotalLimit int32 `json:"total_limit" form:"total_limit"`
|
||
|
Tag string `json:"tag" form:"tag"`
|
||
|
Name string `json:"name" form:"name"`
|
||
|
Scorer string `json:"scorer" form:"scorer"`
|
||
|
Filter string `json:"filter" form:"filter"`
|
||
|
Ranker string `json:"ranker" form:"ranker"`
|
||
|
Priority int32 `json:"priority" form:"priority"`
|
||
|
Limit int32 `json:"limit" form:"limit"`
|
||
|
}{}
|
||
|
|
||
|
if err := c.Bind(&args); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
req := &grpc.RecallRequest{
|
||
|
MID: args.MID,
|
||
|
BUVID: args.BUVID,
|
||
|
TotalLimit: args.TotalLimit,
|
||
|
Infos: []*grpc.RecallInfo{
|
||
|
{
|
||
|
Tag: args.Tag,
|
||
|
Name: args.Name,
|
||
|
Scorer: args.Scorer,
|
||
|
Filter: args.Filter,
|
||
|
Ranker: args.Ranker,
|
||
|
Priority: args.Priority,
|
||
|
Limit: args.Limit,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
c.JSON(srv.Recall(c, req))
|
||
|
}
|
||
|
|
||
|
func newIncomeVideos(c *bm.Context) {
|
||
|
args := &grpc.NewIncomeVideoRequest{}
|
||
|
if err := c.BindWith(args, binding.JSON); err != nil {
|
||
|
return
|
||
|
}
|
||
|
fmt.Println(args)
|
||
|
c.JSON(srv.NewIncomeVideo(c, args))
|
||
|
}
|
||
|
|
||
|
func videosByIndex(c *bm.Context) {
|
||
|
args := &grpc.VideosByIndexRequest{}
|
||
|
if err := c.Bind(args); err != nil {
|
||
|
return
|
||
|
}
|
||
|
c.JSON(srv.VideosByIndex(c, args))
|
||
|
}
|
||
|
|
||
|
func ping(c *bm.Context) {
|
||
|
if err := srv.Ping(c); err != nil {
|
||
|
log.Error("ping error(%v)", err)
|
||
|
c.AbortWithStatus(http.StatusServiceUnavailable)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func register(c *bm.Context) {
|
||
|
c.JSON(map[string]interface{}{}, nil)
|
||
|
}
|
||
|
|
||
|
// example for http request handler
|
||
|
func howToStart(c *bm.Context) {
|
||
|
c.String(0, "Golang 大法好 !!!")
|
||
|
}
|