Files
a301_server/routes/routes.go
tolelom 18c39bd4c5
All checks were successful
Server CI/CD / deploy (push) Successful in 35s
feat: 게임 파일 직접 업로드 방식으로 전환
- zip 스트리밍 업로드 (StreamRequestBody) → /data/game/game.zip 저장
- A301.exe SHA256 해시 자동 추출 (zip 분석)
- 버전·파일명·크기 파일명 및 용량에서 자동 추출
- GET /api/download/file 엔드포인트 추가
- BASE_URL, GAME_DIR 환경변수 추가
- Dockerfile에 /data/game 디렉토리 생성

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 23:25:07 +09:00

44 lines
1.1 KiB
Go

package routes
import (
"a301_server/internal/announcement"
"a301_server/internal/auth"
"a301_server/internal/download"
"a301_server/pkg/middleware"
"github.com/gofiber/fiber/v2"
)
func Register(
app *fiber.App,
authH *auth.Handler,
annH *announcement.Handler,
dlH *download.Handler,
) {
api := app.Group("/api")
// Auth
a := api.Group("/auth")
a.Post("/register", authH.Register)
a.Post("/login", authH.Login)
a.Post("/logout", middleware.Auth, authH.Logout)
// Users (admin only)
u := api.Group("/users", middleware.Auth, middleware.AdminOnly)
u.Get("/", authH.GetAllUsers)
u.Patch("/:id/role", authH.UpdateRole)
u.Delete("/:id", authH.DeleteUser)
// Announcements
ann := api.Group("/announcements")
ann.Get("/", annH.GetAll)
ann.Post("/", middleware.Auth, middleware.AdminOnly, annH.Create)
ann.Put("/:id", middleware.Auth, middleware.AdminOnly, annH.Update)
ann.Delete("/:id", middleware.Auth, middleware.AdminOnly, annH.Delete)
// Download
dl := api.Group("/download")
dl.Get("/info", dlH.GetInfo)
dl.Get("/file", dlH.ServeFile)
dl.Post("/upload", middleware.Auth, middleware.AdminOnly, dlH.Upload)
}