router.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package httpapi
  2. import (
  3. "net/http"
  4. "cmr-backend/internal/httpapi/handlers"
  5. "cmr-backend/internal/httpapi/middleware"
  6. "cmr-backend/internal/platform/jwtx"
  7. "cmr-backend/internal/service"
  8. )
  9. func NewRouter(
  10. appEnv string,
  11. jwtManager *jwtx.Manager,
  12. authService *service.AuthService,
  13. entryService *service.EntryService,
  14. entryHomeService *service.EntryHomeService,
  15. adminResourceService *service.AdminResourceService,
  16. adminEventService *service.AdminEventService,
  17. adminPipelineService *service.AdminPipelineService,
  18. eventService *service.EventService,
  19. eventPlayService *service.EventPlayService,
  20. configService *service.ConfigService,
  21. homeService *service.HomeService,
  22. profileService *service.ProfileService,
  23. resultService *service.ResultService,
  24. sessionService *service.SessionService,
  25. devService *service.DevService,
  26. meService *service.MeService,
  27. ) http.Handler {
  28. mux := http.NewServeMux()
  29. healthHandler := handlers.NewHealthHandler()
  30. authHandler := handlers.NewAuthHandler(authService)
  31. entryHandler := handlers.NewEntryHandler(entryService)
  32. entryHomeHandler := handlers.NewEntryHomeHandler(entryHomeService)
  33. adminResourceHandler := handlers.NewAdminResourceHandler(adminResourceService)
  34. adminEventHandler := handlers.NewAdminEventHandler(adminEventService)
  35. adminPipelineHandler := handlers.NewAdminPipelineHandler(adminPipelineService)
  36. eventHandler := handlers.NewEventHandler(eventService)
  37. eventPlayHandler := handlers.NewEventPlayHandler(eventPlayService)
  38. configHandler := handlers.NewConfigHandler(configService)
  39. homeHandler := handlers.NewHomeHandler(homeService)
  40. profileHandler := handlers.NewProfileHandler(profileService)
  41. resultHandler := handlers.NewResultHandler(resultService)
  42. sessionHandler := handlers.NewSessionHandler(sessionService)
  43. devHandler := handlers.NewDevHandler(devService)
  44. meHandler := handlers.NewMeHandler(meService)
  45. authMiddleware := middleware.NewAuthMiddleware(jwtManager)
  46. mux.HandleFunc("GET /healthz", healthHandler.Get)
  47. mux.HandleFunc("GET /home", homeHandler.GetHome)
  48. mux.HandleFunc("GET /cards", homeHandler.GetCards)
  49. mux.HandleFunc("GET /entry/resolve", entryHandler.Resolve)
  50. mux.Handle("GET /admin/maps", authMiddleware(http.HandlerFunc(adminResourceHandler.ListMaps)))
  51. mux.Handle("POST /admin/maps", authMiddleware(http.HandlerFunc(adminResourceHandler.CreateMap)))
  52. mux.Handle("GET /admin/maps/{mapPublicID}", authMiddleware(http.HandlerFunc(adminResourceHandler.GetMap)))
  53. mux.Handle("POST /admin/maps/{mapPublicID}/versions", authMiddleware(http.HandlerFunc(adminResourceHandler.CreateMapVersion)))
  54. mux.Handle("GET /admin/playfields", authMiddleware(http.HandlerFunc(adminResourceHandler.ListPlayfields)))
  55. mux.Handle("POST /admin/playfields", authMiddleware(http.HandlerFunc(adminResourceHandler.CreatePlayfield)))
  56. mux.Handle("GET /admin/playfields/{playfieldPublicID}", authMiddleware(http.HandlerFunc(adminResourceHandler.GetPlayfield)))
  57. mux.Handle("POST /admin/playfields/{playfieldPublicID}/versions", authMiddleware(http.HandlerFunc(adminResourceHandler.CreatePlayfieldVersion)))
  58. mux.Handle("GET /admin/resource-packs", authMiddleware(http.HandlerFunc(adminResourceHandler.ListResourcePacks)))
  59. mux.Handle("POST /admin/resource-packs", authMiddleware(http.HandlerFunc(adminResourceHandler.CreateResourcePack)))
  60. mux.Handle("GET /admin/resource-packs/{resourcePackPublicID}", authMiddleware(http.HandlerFunc(adminResourceHandler.GetResourcePack)))
  61. mux.Handle("POST /admin/resource-packs/{resourcePackPublicID}/versions", authMiddleware(http.HandlerFunc(adminResourceHandler.CreateResourcePackVersion)))
  62. mux.Handle("GET /admin/events", authMiddleware(http.HandlerFunc(adminEventHandler.ListEvents)))
  63. mux.Handle("POST /admin/events", authMiddleware(http.HandlerFunc(adminEventHandler.CreateEvent)))
  64. mux.Handle("GET /admin/events/{eventPublicID}", authMiddleware(http.HandlerFunc(adminEventHandler.GetEvent)))
  65. mux.Handle("PUT /admin/events/{eventPublicID}", authMiddleware(http.HandlerFunc(adminEventHandler.UpdateEvent)))
  66. mux.Handle("POST /admin/events/{eventPublicID}/source", authMiddleware(http.HandlerFunc(adminEventHandler.SaveSource)))
  67. mux.Handle("GET /admin/events/{eventPublicID}/pipeline", authMiddleware(http.HandlerFunc(adminPipelineHandler.GetEventPipeline)))
  68. mux.Handle("POST /admin/sources/{sourceID}/build", authMiddleware(http.HandlerFunc(adminPipelineHandler.BuildSource)))
  69. mux.Handle("GET /admin/builds/{buildID}", authMiddleware(http.HandlerFunc(adminPipelineHandler.GetBuild)))
  70. mux.Handle("POST /admin/builds/{buildID}/publish", authMiddleware(http.HandlerFunc(adminPipelineHandler.PublishBuild)))
  71. mux.Handle("POST /admin/events/{eventPublicID}/rollback", authMiddleware(http.HandlerFunc(adminPipelineHandler.RollbackRelease)))
  72. if appEnv != "production" {
  73. mux.HandleFunc("GET /dev/workbench", devHandler.Workbench)
  74. mux.HandleFunc("POST /dev/bootstrap-demo", devHandler.BootstrapDemo)
  75. mux.HandleFunc("GET /dev/config/local-files", configHandler.ListLocalFiles)
  76. mux.HandleFunc("POST /dev/events/{eventPublicID}/config-sources/import-local", configHandler.ImportLocal)
  77. mux.HandleFunc("POST /dev/config-builds/preview", configHandler.BuildPreview)
  78. mux.HandleFunc("POST /dev/config-builds/publish", configHandler.PublishBuild)
  79. }
  80. mux.Handle("GET /me/entry-home", authMiddleware(http.HandlerFunc(entryHomeHandler.Get)))
  81. mux.Handle("GET /me/profile", authMiddleware(http.HandlerFunc(profileHandler.Get)))
  82. mux.HandleFunc("GET /events/{eventPublicID}", eventHandler.GetDetail)
  83. mux.Handle("GET /events/{eventPublicID}/play", authMiddleware(http.HandlerFunc(eventPlayHandler.Get)))
  84. mux.Handle("GET /events/{eventPublicID}/config-sources", authMiddleware(http.HandlerFunc(configHandler.ListSources)))
  85. mux.Handle("POST /events/{eventPublicID}/launch", authMiddleware(http.HandlerFunc(eventHandler.Launch)))
  86. mux.Handle("GET /config-sources/{sourceID}", authMiddleware(http.HandlerFunc(configHandler.GetSource)))
  87. mux.Handle("GET /config-builds/{buildID}", authMiddleware(http.HandlerFunc(configHandler.GetBuild)))
  88. mux.Handle("GET /sessions/{sessionPublicID}", authMiddleware(http.HandlerFunc(sessionHandler.GetDetail)))
  89. mux.Handle("GET /sessions/{sessionPublicID}/result", authMiddleware(http.HandlerFunc(resultHandler.GetSessionResult)))
  90. mux.HandleFunc("POST /sessions/{sessionPublicID}/start", sessionHandler.Start)
  91. mux.HandleFunc("POST /sessions/{sessionPublicID}/finish", sessionHandler.Finish)
  92. mux.HandleFunc("POST /auth/sms/send", authHandler.SendSMSCode)
  93. mux.HandleFunc("POST /auth/login/sms", authHandler.LoginSMS)
  94. mux.HandleFunc("POST /auth/login/wechat-mini", authHandler.LoginWechatMini)
  95. mux.Handle("POST /auth/bind/mobile", authMiddleware(http.HandlerFunc(authHandler.BindMobile)))
  96. mux.HandleFunc("POST /auth/refresh", authHandler.Refresh)
  97. mux.HandleFunc("POST /auth/logout", authHandler.Logout)
  98. mux.Handle("GET /me", authMiddleware(http.HandlerFunc(meHandler.Get)))
  99. mux.Handle("GET /me/sessions", authMiddleware(http.HandlerFunc(sessionHandler.ListMine)))
  100. mux.Handle("GET /me/results", authMiddleware(http.HandlerFunc(resultHandler.ListMine)))
  101. return mux
  102. }