You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.4 KiB
101 lines
2.4 KiB
package http |
|
|
|
import ( |
|
"go-common/library/net/metadata" |
|
"net/http" |
|
|
|
"go-common/app/service/live/userexp/conf" |
|
"go-common/app/service/live/userexp/service" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
) |
|
|
|
var ( |
|
expSvr *service.Service |
|
) |
|
|
|
// Init init account service. |
|
func Init(c *conf.Config, s *service.Service) { |
|
// init service |
|
expSvr = s |
|
// init external router |
|
engineOut := bm.DefaultServer(c.BM.Inner) |
|
innerRouter(engineOut) |
|
// init Inner serve |
|
if err := engineOut.Start(); err != nil { |
|
log.Error("bm.DefaultServer error(%v)", err) |
|
panic(err) |
|
} |
|
engineLocal := bm.DefaultServer(c.BM.Local) |
|
localRouter(engineLocal) |
|
// init Local serve |
|
if err := engineLocal.Start(); err != nil { |
|
log.Error("bm.DefaultServer error(%v)", err) |
|
panic(err) |
|
} |
|
} |
|
|
|
// outerRouter init outer router api path. |
|
func innerRouter(e *bm.Engine) { |
|
// init api |
|
e.GET("/monitor/ping", ping) |
|
group := e.Group("/x/internal/liveexp") |
|
{ |
|
group.GET("/level/get", level) |
|
group.GET("/level/mulGet", multiGetLevel) |
|
group.GET("/level/addUexp", addUexp) |
|
group.GET("/level/addRexp", addRexp) |
|
} |
|
} |
|
|
|
// localRouter init local router. |
|
func localRouter(e *bm.Engine) { |
|
} |
|
|
|
// ping check server ok. |
|
func ping(c *bm.Context) { |
|
if err := expSvr.Ping(c); err != nil { |
|
log.Error("live-userexp http service ping error(%v)", err) |
|
c.AbortWithStatus(http.StatusServiceUnavailable) |
|
} |
|
} |
|
|
|
func infocArg(c *bm.Context) (arg map[string]string) { |
|
var ( |
|
ua string |
|
referer string |
|
sid string |
|
req = c.Request |
|
) |
|
ua = req.Header.Get(service.RelInfocUA) |
|
referer = req.Header.Get(service.RelInfocReferer) |
|
sidCookie, err := req.Cookie(service.RelInfocSid) |
|
if err != nil { |
|
//log.Warn("live-userexo infoc get sid failed error(%v)", err) |
|
} else { |
|
sid = sidCookie.Value |
|
} |
|
buvid := req.Header.Get(service.RelInfocHeaderBuvid) |
|
if buvid == "" { |
|
buvidCookie, _ := req.Cookie(service.RelInfocCookieBuvid) |
|
if buvidCookie != nil { |
|
buvid = buvidCookie.Value |
|
} |
|
} |
|
arg = map[string]string{ |
|
service.RelInfocIP: metadata.String(c, metadata.RemoteIP), |
|
service.RelInfocReferer: referer, |
|
service.RelInfocSid: sid, |
|
service.RelInfocBuvid: buvid, |
|
service.RelInfocUA: ua, |
|
} |
|
return |
|
} |
|
|
|
//func checkHealth(c wctx.Context) { |
|
// _, err := os.Stat(conf.Conf.CheckFile) |
|
// if os.IsNotExist(err) { |
|
// http.Error(c.Response(), http.StatusText(http.StatusServiceUnavailable), http.StatusServiceUnavailable) |
|
// } |
|
// c.Cancel() |
|
//}
|
|
|