| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- package httpapi
- import (
- "net/http"
- "cmr-backend/internal/httpapi/handlers"
- "cmr-backend/internal/httpapi/middleware"
- "cmr-backend/internal/platform/jwtx"
- "cmr-backend/internal/service"
- )
- func NewRouter(
- appEnv string,
- jwtManager *jwtx.Manager,
- authService *service.AuthService,
- entryService *service.EntryService,
- entryHomeService *service.EntryHomeService,
- adminResourceService *service.AdminResourceService,
- adminProductionService *service.AdminProductionService,
- adminEventService *service.AdminEventService,
- adminPipelineService *service.AdminPipelineService,
- eventService *service.EventService,
- eventPlayService *service.EventPlayService,
- configService *service.ConfigService,
- homeService *service.HomeService,
- profileService *service.ProfileService,
- resultService *service.ResultService,
- sessionService *service.SessionService,
- devService *service.DevService,
- meService *service.MeService,
- ) http.Handler {
- mux := http.NewServeMux()
- healthHandler := handlers.NewHealthHandler()
- authHandler := handlers.NewAuthHandler(authService)
- entryHandler := handlers.NewEntryHandler(entryService)
- entryHomeHandler := handlers.NewEntryHomeHandler(entryHomeService)
- adminResourceHandler := handlers.NewAdminResourceHandler(adminResourceService)
- adminProductionHandler := handlers.NewAdminProductionHandler(adminProductionService)
- adminEventHandler := handlers.NewAdminEventHandler(adminEventService)
- adminPipelineHandler := handlers.NewAdminPipelineHandler(adminPipelineService)
- eventHandler := handlers.NewEventHandler(eventService)
- eventPlayHandler := handlers.NewEventPlayHandler(eventPlayService)
- configHandler := handlers.NewConfigHandler(configService)
- homeHandler := handlers.NewHomeHandler(homeService)
- profileHandler := handlers.NewProfileHandler(profileService)
- resultHandler := handlers.NewResultHandler(resultService)
- sessionHandler := handlers.NewSessionHandler(sessionService)
- devHandler := handlers.NewDevHandler(devService)
- meHandler := handlers.NewMeHandler(meService)
- authMiddleware := middleware.NewAuthMiddleware(jwtManager)
- mux.HandleFunc("GET /healthz", healthHandler.Get)
- mux.HandleFunc("GET /home", homeHandler.GetHome)
- mux.HandleFunc("GET /cards", homeHandler.GetCards)
- mux.HandleFunc("GET /entry/resolve", entryHandler.Resolve)
- mux.Handle("GET /admin/maps", authMiddleware(http.HandlerFunc(adminResourceHandler.ListMaps)))
- mux.Handle("POST /admin/maps", authMiddleware(http.HandlerFunc(adminResourceHandler.CreateMap)))
- mux.Handle("GET /admin/maps/{mapPublicID}", authMiddleware(http.HandlerFunc(adminResourceHandler.GetMap)))
- mux.Handle("POST /admin/maps/{mapPublicID}/versions", authMiddleware(http.HandlerFunc(adminResourceHandler.CreateMapVersion)))
- mux.Handle("GET /admin/places", authMiddleware(http.HandlerFunc(adminProductionHandler.ListPlaces)))
- mux.Handle("POST /admin/places", authMiddleware(http.HandlerFunc(adminProductionHandler.CreatePlace)))
- mux.Handle("GET /admin/places/{placePublicID}", authMiddleware(http.HandlerFunc(adminProductionHandler.GetPlace)))
- mux.Handle("POST /admin/places/{placePublicID}/map-assets", authMiddleware(http.HandlerFunc(adminProductionHandler.CreateMapAsset)))
- mux.Handle("GET /admin/map-assets/{mapAssetPublicID}", authMiddleware(http.HandlerFunc(adminProductionHandler.GetMapAsset)))
- mux.Handle("POST /admin/map-assets/{mapAssetPublicID}/tile-releases", authMiddleware(http.HandlerFunc(adminProductionHandler.CreateTileRelease)))
- mux.Handle("POST /admin/map-assets/{mapAssetPublicID}/course-sets", authMiddleware(http.HandlerFunc(adminProductionHandler.CreateCourseSet)))
- mux.Handle("GET /admin/course-sources", authMiddleware(http.HandlerFunc(adminProductionHandler.ListCourseSources)))
- mux.Handle("POST /admin/course-sources", authMiddleware(http.HandlerFunc(adminProductionHandler.CreateCourseSource)))
- mux.Handle("GET /admin/course-sources/{sourcePublicID}", authMiddleware(http.HandlerFunc(adminProductionHandler.GetCourseSource)))
- mux.Handle("GET /admin/course-sets/{courseSetPublicID}", authMiddleware(http.HandlerFunc(adminProductionHandler.GetCourseSet)))
- mux.Handle("POST /admin/course-sets/{courseSetPublicID}/variants", authMiddleware(http.HandlerFunc(adminProductionHandler.CreateCourseVariant)))
- mux.Handle("GET /admin/runtime-bindings", authMiddleware(http.HandlerFunc(adminProductionHandler.ListRuntimeBindings)))
- mux.Handle("POST /admin/runtime-bindings", authMiddleware(http.HandlerFunc(adminProductionHandler.CreateRuntimeBinding)))
- mux.Handle("GET /admin/runtime-bindings/{runtimeBindingPublicID}", authMiddleware(http.HandlerFunc(adminProductionHandler.GetRuntimeBinding)))
- mux.Handle("GET /admin/playfields", authMiddleware(http.HandlerFunc(adminResourceHandler.ListPlayfields)))
- mux.Handle("POST /admin/playfields", authMiddleware(http.HandlerFunc(adminResourceHandler.CreatePlayfield)))
- mux.Handle("GET /admin/playfields/{playfieldPublicID}", authMiddleware(http.HandlerFunc(adminResourceHandler.GetPlayfield)))
- mux.Handle("POST /admin/playfields/{playfieldPublicID}/versions", authMiddleware(http.HandlerFunc(adminResourceHandler.CreatePlayfieldVersion)))
- mux.Handle("GET /admin/resource-packs", authMiddleware(http.HandlerFunc(adminResourceHandler.ListResourcePacks)))
- mux.Handle("POST /admin/resource-packs", authMiddleware(http.HandlerFunc(adminResourceHandler.CreateResourcePack)))
- mux.Handle("GET /admin/resource-packs/{resourcePackPublicID}", authMiddleware(http.HandlerFunc(adminResourceHandler.GetResourcePack)))
- mux.Handle("POST /admin/resource-packs/{resourcePackPublicID}/versions", authMiddleware(http.HandlerFunc(adminResourceHandler.CreateResourcePackVersion)))
- mux.Handle("GET /admin/events", authMiddleware(http.HandlerFunc(adminEventHandler.ListEvents)))
- mux.Handle("POST /admin/events", authMiddleware(http.HandlerFunc(adminEventHandler.CreateEvent)))
- mux.Handle("GET /admin/events/{eventPublicID}", authMiddleware(http.HandlerFunc(adminEventHandler.GetEvent)))
- mux.Handle("PUT /admin/events/{eventPublicID}", authMiddleware(http.HandlerFunc(adminEventHandler.UpdateEvent)))
- mux.Handle("POST /admin/events/{eventPublicID}/source", authMiddleware(http.HandlerFunc(adminEventHandler.SaveSource)))
- mux.Handle("GET /admin/events/{eventPublicID}/presentations", authMiddleware(http.HandlerFunc(adminEventHandler.ListPresentations)))
- mux.Handle("POST /admin/events/{eventPublicID}/presentations", authMiddleware(http.HandlerFunc(adminEventHandler.CreatePresentation)))
- mux.Handle("POST /admin/events/{eventPublicID}/presentations/import", authMiddleware(http.HandlerFunc(adminEventHandler.ImportPresentation)))
- mux.Handle("GET /admin/presentations/{presentationPublicID}", authMiddleware(http.HandlerFunc(adminEventHandler.GetPresentation)))
- mux.Handle("GET /admin/events/{eventPublicID}/content-bundles", authMiddleware(http.HandlerFunc(adminEventHandler.ListContentBundles)))
- mux.Handle("POST /admin/events/{eventPublicID}/content-bundles", authMiddleware(http.HandlerFunc(adminEventHandler.CreateContentBundle)))
- mux.Handle("POST /admin/events/{eventPublicID}/content-bundles/import", authMiddleware(http.HandlerFunc(adminEventHandler.ImportContentBundle)))
- mux.Handle("GET /admin/content-bundles/{contentBundlePublicID}", authMiddleware(http.HandlerFunc(adminEventHandler.GetContentBundle)))
- mux.Handle("POST /admin/events/{eventPublicID}/defaults", authMiddleware(http.HandlerFunc(adminEventHandler.UpdateEventDefaults)))
- mux.Handle("GET /admin/events/{eventPublicID}/pipeline", authMiddleware(http.HandlerFunc(adminPipelineHandler.GetEventPipeline)))
- mux.Handle("POST /admin/sources/{sourceID}/build", authMiddleware(http.HandlerFunc(adminPipelineHandler.BuildSource)))
- mux.Handle("GET /admin/builds/{buildID}", authMiddleware(http.HandlerFunc(adminPipelineHandler.GetBuild)))
- mux.Handle("POST /admin/builds/{buildID}/publish", authMiddleware(http.HandlerFunc(adminPipelineHandler.PublishBuild)))
- mux.Handle("GET /admin/releases/{releasePublicID}", authMiddleware(http.HandlerFunc(adminPipelineHandler.GetRelease)))
- mux.Handle("POST /admin/releases/{releasePublicID}/runtime-binding", authMiddleware(http.HandlerFunc(adminPipelineHandler.BindReleaseRuntime)))
- mux.Handle("POST /admin/events/{eventPublicID}/rollback", authMiddleware(http.HandlerFunc(adminPipelineHandler.RollbackRelease)))
- if appEnv != "production" {
- mux.HandleFunc("GET /dev/workbench", devHandler.Workbench)
- mux.HandleFunc("POST /dev/bootstrap-demo", devHandler.BootstrapDemo)
- mux.HandleFunc("POST /dev/client-logs", devHandler.CreateClientLog)
- mux.HandleFunc("GET /dev/client-logs", devHandler.ListClientLogs)
- mux.HandleFunc("DELETE /dev/client-logs", devHandler.ClearClientLogs)
- mux.HandleFunc("GET /dev/manifest-summary", devHandler.ManifestSummary)
- mux.HandleFunc("GET /dev/demo-assets/presentations/{demoKey}", devHandler.DemoPresentationSchema)
- mux.HandleFunc("GET /dev/demo-assets/content-manifests/{demoKey}", devHandler.DemoContentManifest)
- mux.HandleFunc("GET /dev/config/local-files", configHandler.ListLocalFiles)
- mux.HandleFunc("POST /dev/events/{eventPublicID}/config-sources/import-local", configHandler.ImportLocal)
- mux.HandleFunc("POST /dev/config-builds/preview", configHandler.BuildPreview)
- mux.HandleFunc("POST /dev/config-builds/publish", configHandler.PublishBuild)
- }
- mux.Handle("GET /me/entry-home", authMiddleware(http.HandlerFunc(entryHomeHandler.Get)))
- mux.Handle("GET /me/profile", authMiddleware(http.HandlerFunc(profileHandler.Get)))
- mux.HandleFunc("GET /events/{eventPublicID}", eventHandler.GetDetail)
- mux.Handle("GET /events/{eventPublicID}/play", authMiddleware(http.HandlerFunc(eventPlayHandler.Get)))
- mux.Handle("GET /events/{eventPublicID}/config-sources", authMiddleware(http.HandlerFunc(configHandler.ListSources)))
- mux.Handle("POST /events/{eventPublicID}/launch", authMiddleware(http.HandlerFunc(eventHandler.Launch)))
- mux.Handle("GET /config-sources/{sourceID}", authMiddleware(http.HandlerFunc(configHandler.GetSource)))
- mux.Handle("GET /config-builds/{buildID}", authMiddleware(http.HandlerFunc(configHandler.GetBuild)))
- mux.Handle("GET /sessions/{sessionPublicID}", authMiddleware(http.HandlerFunc(sessionHandler.GetDetail)))
- mux.Handle("GET /sessions/{sessionPublicID}/result", authMiddleware(http.HandlerFunc(resultHandler.GetSessionResult)))
- mux.HandleFunc("POST /sessions/{sessionPublicID}/start", sessionHandler.Start)
- mux.HandleFunc("POST /sessions/{sessionPublicID}/finish", sessionHandler.Finish)
- mux.HandleFunc("POST /auth/sms/send", authHandler.SendSMSCode)
- mux.HandleFunc("POST /auth/login/sms", authHandler.LoginSMS)
- mux.HandleFunc("POST /auth/login/wechat-mini", authHandler.LoginWechatMini)
- mux.Handle("POST /auth/bind/mobile", authMiddleware(http.HandlerFunc(authHandler.BindMobile)))
- mux.HandleFunc("POST /auth/refresh", authHandler.Refresh)
- mux.HandleFunc("POST /auth/logout", authHandler.Logout)
- mux.Handle("GET /me", authMiddleware(http.HandlerFunc(meHandler.Get)))
- mux.Handle("GET /me/sessions", authMiddleware(http.HandlerFunc(sessionHandler.ListMine)))
- mux.Handle("GET /me/results", authMiddleware(http.HandlerFunc(resultHandler.ListMine)))
- return mux
- }
|