123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- package http
- import (
- "net/http"
- "go-common/app/service/main/relation/conf"
- "go-common/app/service/main/relation/service"
- "go-common/library/log"
- bm "go-common/library/net/http/blademaster"
- "go-common/library/net/http/blademaster/middleware/antispam"
- "go-common/library/net/http/blademaster/middleware/rate"
- v "go-common/library/net/http/blademaster/middleware/verify"
- "go-common/library/net/metadata"
- )
- var (
- anti *antispam.Antispam
- relationSvc *service.Service
- verify *v.Verify
- addFollowingRate *rate.Limiter
- )
- // Init init http sever instance.
- func Init(c *conf.Config, s *service.Service) {
- relationSvc = s
- verify = v.New(c.Verify)
- anti = antispam.New(c.Antispam)
- addFollowingRate = rate.New(c.AddFollowingRate)
- // init inner router
- engine := bm.DefaultServer(c.BM)
- setupInnerEngine(engine)
- if err := engine.Start(); err != nil {
- log.Error("engine.Start() error(%v)", err)
- panic(err)
- }
- }
- // innerRouter init inner router.
- func setupInnerEngine(e *bm.Engine) {
- // health check
- e.Ping(ping)
- e.Register(register)
- //new defined api lists
- g := e.Group("/x/internal/relation", verify.Verify)
- // relation
- g.GET("", relation)
- g.GET("/relations", relations)
- // stat
- g.GET("/stat", stat)
- g.GET("/stats", stats)
- // private api
- g.POST("/stat/set", setStat)
- g.POST("/tag/cache/del", delTagCache)
- g.GET("/tag/special", special)
- // following group
- following := g.Group("/following")
- following.GET("/followings", followings)
- following.GET("/same/followings", sameFollowings)
- following.POST("/add", addFollowingRate.Handler(), anti.ServeHTTP, addFollowing)
- following.POST("/del", anti.ServeHTTP, delFollowing)
- // whisper group
- whisper := g.Group("/whisper")
- whisper.GET("/whispers", whispers)
- whisper.POST("/add", anti.ServeHTTP, addWhisper)
- whisper.POST("/del", anti.ServeHTTP, delWhisper)
- // black group
- black := g.Group("/black")
- black.GET("/blacks", blacks)
- black.POST("/add", anti.ServeHTTP, addBlack)
- black.POST("/del", anti.ServeHTTP, delBlack)
- // follower group
- follower := g.Group("/follower")
- follower.GET("/followers", followers)
- follower.POST("/del", anti.ServeHTTP, delFollower)
- // recommend group
- // recommend := g.Group("/recommend")
- // recommend.GET("/global/hot", globalHot)
- // cache group
- cache := g.Group("/cache")
- cache.POST("/following/del", delFollowingCache)
- cache.POST("/following/update", updateFollowingCache)
- cache.POST("/follower/del", delFollowerCache)
- cache.POST("/stat/del", delStatCache)
- // cache group
- admin := g.Group("/admin")
- admin.POST("/monitor/add", addMonitor)
- admin.POST("/monitor/del", delMonitor)
- admin.GET("/monitor/load", loadMonitor)
- }
- // ping check server ok.
- func ping(c *bm.Context) {
- if err := relationSvc.Ping(c); err != nil {
- log.Error("service ping error(%v)", err)
- c.Writer.WriteHeader(http.StatusServiceUnavailable)
- }
- }
- // register check server ok.
- func register(c *bm.Context) {
- c.JSON(map[string]struct{}{}, nil)
- }
- 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("relation 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
- }
|