go-common/app/interface/main/report-click/http/http.go
2019-04-22 18:49:16 +08:00

91 lines
2.8 KiB
Go

package http
import (
"time"
"go-common/app/interface/main/report-click/conf"
"go-common/app/interface/main/report-click/service"
"go-common/library/log"
"go-common/library/log/infoc"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/auth"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
clickSvr *service.Service
authSvc *auth.Auth
verifySvc *verify.Verify
infocRealTime *infoc.Infoc
infocStatistics *infoc.Infoc
fromMap = make(map[int64]bool)
fromInlineMap = make(map[int64]bool)
inlineDuration int64
)
// New http init.
func New(c *conf.Config) (engine *bm.Engine) {
clickSvr = service.New(c)
authSvc = auth.New(c.Auth)
verifySvc = verify.New(c.Verify)
infocRealTime = infoc.New(c.Infoc2.RealTime)
infocStatistics = infoc.New(c.Infoc2.Statistics)
for _, v := range c.Click.From {
fromMap[v] = true
}
for _, v := range c.Click.FromInline { // init inline play "from"
fromInlineMap[v] = true
}
inlineDuration = c.Click.InlineDuration // inline play duration line
engine = bm.DefaultServer(c.BM)
engine.Use(bm.Recovery(), bm.Logger())
outerRouter(engine)
if err := engine.Start(); err != nil {
log.Error("engine.Start() error(%v)", err)
panic(err)
}
return
}
func outerRouter(e *bm.Engine) {
e.GET("/monitor/ping", ping)
e.POST("/x/report/click/web", authSvc.GuestWeb, webClick)
e.POST("/x/report/click/outer", authSvc.GuestWeb, outerClick)
e.POST("/x/stat/web", authSvc.GuestWeb, webClick)
e.POST("/x/stat/outer", authSvc.GuestWeb, outerClick)
click := e.Group("/x/report/click")
{
click.GET("/now", serverNow)
click.POST("/h5", authSvc.Guest, h5Click)
click.POST("/h5/outer", authSvc.Guest, outerClickH5) // nocsrf
click.POST("/ios", authSvc.Guest, iosClick)
click.POST("/android", authSvc.Guest, androidClick)
click.POST("/android2", authSvc.Guest, android2Click)
click.POST("/web/h5", authSvc.Guest, webH5Click)
click.POST("/android/tv", authSvc.Guest, androidTV)
}
report := e.Group("/x/report/")
{
report.POST("/player", verifySvc.Verify, reportPlayer) // old 30s heart
report.POST("/heartbeat", verifySvc.Verify, reportHeartbeat) // new app 30s heart
report.POST("/heartbeat/mobile", verifySvc.Verify, heartbeatMobile)
report.POST("/web/heartbeat", authSvc.Guest, webHeartbeat) // web 30s heart
}
stat := e.Group("/x/stat")
{
stat.GET("/now", serverNow)
stat.POST("/err_report", errReport)
stat.POST("/h5", authSvc.Guest, h5Click)
stat.POST("/ios", authSvc.Guest, iosClick)
stat.POST("/android", authSvc.Guest, androidClick)
stat.POST("/android2", authSvc.Guest, android2Click)
}
}
func ping(c *bm.Context) {}
func serverNow(c *bm.Context) {
data := map[string]int64{"now": time.Now().Unix()}
c.JSON(data, nil)
}