http.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package http
  2. import (
  3. "net/http"
  4. "go-common/app/interface/main/mcn/conf"
  5. "go-common/app/interface/main/mcn/service"
  6. "go-common/library/log"
  7. bm "go-common/library/net/http/blademaster"
  8. "go-common/library/net/http/blademaster/middleware/antispam"
  9. "go-common/library/net/http/blademaster/middleware/auth"
  10. "go-common/library/net/http/blademaster/middleware/verify"
  11. )
  12. var (
  13. srv *service.Service
  14. authSvc *auth.Auth
  15. uploadAnti *antispam.Antispam
  16. verifySvc *verify.Verify
  17. )
  18. // Init init
  19. func Init(c *conf.Config) {
  20. initService(c)
  21. engine := bm.DefaultServer(c.BM)
  22. route(engine)
  23. if err := engine.Start(); err != nil {
  24. log.Error("bm Start error(%v)", err)
  25. panic(err)
  26. }
  27. }
  28. func initService(c *conf.Config) {
  29. srv = service.New(c)
  30. authSvc = auth.New(nil)
  31. uploadAnti = antispam.New(c.UploadAntispam)
  32. verifySvc = verify.New(nil)
  33. }
  34. func route(e *bm.Engine) {
  35. e.Ping(ping)
  36. e.Register(register)
  37. // 以下接口在 api.bilibili.com,对外使用
  38. g := e.Group("/x/mcn")
  39. {
  40. //g.GET("/start", vfy.Verify, howToStart)
  41. g.GET("/state", authSvc.User, mcnState)
  42. g.GET("/exist", authSvc.User, mcnExist)
  43. g.POST("/file/upload", multipartForm, authSvc.User, uploadAnti.ServeHTTP, upload)
  44. g.GET("/account/info", authSvc.User, mcnGetAccountInfo)
  45. g.GET("/base/info", authSvc.User, mcnBaseInfo)
  46. g.POST("/apply", authSvc.User, mcnApply)
  47. g.POST("/mcn/bindup", authSvc.User, mcnBindUpApply)
  48. g.GET("/mcn/get_data_summary", authSvc.User, mcnGetDataSummary)
  49. g.GET("/mcn/get_data_up_list", authSvc.User, mcnGetDataUpList)
  50. g.GET("/mcn/get_old_info", authSvc.User, mcnGetOldInfo)
  51. g.POST("/mcn/permit/change", authSvc.User, mcnGetChangePermit)
  52. g.POST("/mcn/publication/change-price", authSvc.User, mcnPublicationPriceChange)
  53. g.POST("/up/confirm", authSvc.User, mcnUpConfirm)
  54. g.GET("/up/get_bind", authSvc.User, mcnUpGetBind)
  55. g.POST("/up/permit/confirm-reauth", authSvc.User, mcnUpPermitApplyConfirm)
  56. g.GET("/up/permit/get-reauth", authSvc.User, mcnPermitApplyGetBind)
  57. g.GET("/rank/up_fans", authSvc.User, mcnGetRankUpFans)
  58. g.GET("/rank/archive_likes", authSvc.User, mcnGetRankArchiveLikesOuter)
  59. g.GET("/recommend/list", authSvc.User, mcnGetRecommendPool)
  60. g.GET("/recommend/list_tids", authSvc.User, mcnGetRecommendPoolTidList)
  61. g.GET("/data/index/inc", authSvc.User, mcnGetMcnGetIndexInc)
  62. g.GET("/data/index/source", authSvc.User, mcnGetMcnGetIndexSource)
  63. g.GET("/data/play/source", authSvc.User, mcnGetPlaySource)
  64. g.GET("/data/fans", authSvc.User, mcnGetMcnFans)
  65. g.GET("/data/fans/inc", authSvc.User, mcnGetMcnFansInc)
  66. g.GET("/data/fans/dec", authSvc.User, mcnGetMcnFansDec)
  67. g.GET("/data/fans/attention/way", authSvc.User, mcnGetMcnFansAttentionWay)
  68. // mcn粉丝和游客的粉丝分析
  69. g.GET("/data/fans/base/attr", authSvc.User, mcnGetBaseFansAttrReq)
  70. g.GET("/data/fans/area", authSvc.User, mcnGetFansArea)
  71. g.GET("/data/fans/type", authSvc.User, mcnGetFansType)
  72. g.GET("/data/fans/tag", authSvc.User, mcnGetFansTag)
  73. // mcn创作中心数据分析
  74. g.GET("/creative/archives", authSvc.User, archives)
  75. g.GET("/creative/archive/history/list", authSvc.User, archiveHistoryList)
  76. g.GET("/creative/archive/videos", authSvc.User, archiveVideos)
  77. g.GET("/creative/data/archive", authSvc.User, dataArchive)
  78. g.GET("/creative/data/videoquit", authSvc.User, dataVideoQuit)
  79. g.GET("/creative/danmu/distri", authSvc.User, danmuDistri)
  80. g.GET("/creative/data/base", authSvc.User, dataBase)
  81. g.GET("/creative/data/trend", authSvc.User, dataTrend)
  82. g.GET("/creative/data/action", authSvc.User, dataAction)
  83. g.GET("/creative/data/fan", authSvc.User, dataFan)
  84. g.GET("/creative/data/pandect", authSvc.User, dataPandect)
  85. g.GET("/creative/data/survey", authSvc.User, dataSurvey)
  86. g.GET("/creative/data/playsource", authSvc.User, dataPlaySource)
  87. g.GET("/creative/data/playanalysis", authSvc.User, dataPlayAnalysis)
  88. g.GET("/creative/data/article/rank", authSvc.User, dataArticleRank)
  89. }
  90. cmd := e.Group("/cmd")
  91. {
  92. cmd.GET("/reload_rank", cmdReloadRank)
  93. }
  94. // 以下接口在 api.bilibili.co,内部使用
  95. internal := e.Group("/x/internal/mcn")
  96. {
  97. internal.GET("/rank/archive_likes", verifySvc.Verify, mcnGetRankArchiveLikesAPI)
  98. // mcn 数据概况
  99. internal.GET("/data/mcn/summary", verifySvc.Verify, getMcnSummaryAPI)
  100. internal.GET("/data/index/inc", verifySvc.Verify, getIndexIncAPI)
  101. internal.GET("/data/index/source", verifySvc.Verify, getIndexSourceAPI)
  102. internal.GET("/data/play/source", verifySvc.Verify, getPlaySourceAPI)
  103. internal.GET("/data/fans", verifySvc.Verify, getMcnFansAPI)
  104. internal.GET("/data/fans/inc", verifySvc.Verify, getMcnFansIncAPI)
  105. internal.GET("/data/fans/dec", verifySvc.Verify, getMcnFansDecAPI)
  106. internal.GET("/data/fans/attention/way", verifySvc.Verify, getMcnFansAttentionWayAPI)
  107. // mcn粉丝和游客的粉丝分析
  108. internal.GET("/data/fans/base/attr", verifySvc.Verify, getFansBaseFansAttrAPI)
  109. internal.GET("/data/fans/area", verifySvc.Verify, getFansAreaAPI)
  110. internal.GET("/data/fans/type", verifySvc.Verify, getFansTypeAPI)
  111. internal.GET("/data/fans/tag", verifySvc.Verify, getFansTagAPI)
  112. }
  113. }
  114. func ping(c *bm.Context) {
  115. if err := srv.Ping(c); err != nil {
  116. log.Error("ping error(%v)", err)
  117. c.AbortWithStatus(http.StatusServiceUnavailable)
  118. }
  119. }
  120. func register(c *bm.Context) {
  121. c.JSON(map[string]interface{}{}, nil)
  122. }
  123. func multipartForm(c *bm.Context) {
  124. c.Request.ParseMultipartForm(maxFileSize)
  125. }