http.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package http
  2. import (
  3. "go-common/app/service/bbq/topic/api"
  4. "go-common/library/ecode"
  5. "go-common/library/net/http/blademaster/binding"
  6. "net/http"
  7. "go-common/app/service/bbq/topic/internal/service"
  8. "go-common/library/conf/paladin"
  9. "go-common/library/log"
  10. bm "go-common/library/net/http/blademaster"
  11. "go-common/library/net/http/blademaster/middleware/verify"
  12. )
  13. var (
  14. svc *service.Service
  15. )
  16. // New new a bm server.
  17. func New(s *service.Service) (engine *bm.Engine) {
  18. var (
  19. hc struct {
  20. Server *bm.ServerConfig
  21. }
  22. )
  23. if err := paladin.Get("http.toml").UnmarshalTOML(&hc); err != nil {
  24. if err != paladin.ErrNotExist {
  25. panic(err)
  26. }
  27. }
  28. svc = s
  29. engine = bm.DefaultServer(hc.Server)
  30. initRouter(engine, verify.New(nil))
  31. if err := engine.Start(); err != nil {
  32. panic(err)
  33. }
  34. return
  35. }
  36. func initRouter(e *bm.Engine, v *verify.Verify) {
  37. e.Ping(ping)
  38. e.Register(register)
  39. g := e.Group("/bbq/topic")
  40. {
  41. g.GET("/start", howToStart)
  42. g.POST("/update/state", updateTopicState)
  43. g.POST("/update/desc", updateTopicDesc)
  44. g.POST("/stick", stickTopic)
  45. g.POST("/video/stick", stickTopicVideo)
  46. g.POST("/video/set/stick", setStickTopicVideo)
  47. g.GET("/cms/list", cmsTopicList)
  48. g.GET("/video", topicVideo)
  49. }
  50. }
  51. func ping(ctx *bm.Context) {
  52. if err := svc.Ping(ctx); err != nil {
  53. log.Error("ping error(%v)", err)
  54. ctx.AbortWithStatus(http.StatusServiceUnavailable)
  55. }
  56. }
  57. func register(c *bm.Context) {
  58. c.JSON(map[string]interface{}{}, nil)
  59. }
  60. func howToStart(c *bm.Context) {
  61. c.String(0, "golang")
  62. }
  63. func updateTopicState(c *bm.Context) {
  64. arg := &api.TopicInfo{}
  65. if err := c.Bind(arg); err != nil {
  66. c.JSON(nil, ecode.ReqParamErr)
  67. return
  68. }
  69. c.JSON(svc.UpdateTopicState(c, arg))
  70. }
  71. func updateTopicDesc(c *bm.Context) {
  72. arg := &api.TopicInfo{}
  73. if err := c.Bind(arg); err != nil {
  74. c.JSON(nil, ecode.ReqParamErr)
  75. return
  76. }
  77. c.JSON(svc.UpdateTopicDesc(c, arg))
  78. }
  79. func cmsTopicList(c *bm.Context) {
  80. arg := &api.ListCmsTopicsReq{}
  81. if err := c.Bind(arg); err != nil {
  82. c.JSON(nil, ecode.ReqParamErr)
  83. return
  84. }
  85. c.JSON(svc.ListCmsTopics(c, arg))
  86. }
  87. func topicVideo(c *bm.Context) {
  88. arg := &api.ListCmsTopicsReq{}
  89. if err := c.Bind(arg); err != nil {
  90. c.JSON(nil, ecode.ReqParamErr)
  91. return
  92. }
  93. c.JSON(svc.ListCmsTopics(c, arg))
  94. }
  95. func stickTopic(c *bm.Context) {
  96. arg := &api.StickTopicReq{}
  97. if err := c.Bind(arg); err != nil {
  98. c.JSON(nil, ecode.ReqParamErr)
  99. return
  100. }
  101. c.JSON(svc.StickTopic(c, arg))
  102. }
  103. func stickTopicVideo(c *bm.Context) {
  104. arg := &api.StickTopicVideoReq{}
  105. if err := c.Bind(arg); err != nil {
  106. c.JSON(nil, ecode.ReqParamErr)
  107. return
  108. }
  109. c.JSON(svc.StickTopicVideo(c, arg))
  110. }
  111. func setStickTopicVideo(c *bm.Context) {
  112. arg := &api.SetStickTopicVideoReq{}
  113. if err := c.BindWith(arg, binding.JSON); err != nil {
  114. c.JSON(nil, ecode.ReqParamErr)
  115. return
  116. }
  117. c.JSON(svc.SetStickTopicVideo(c, arg))
  118. }