package routing

import "github.com/gin-gonic/gin"

type Handlers struct {
	Index              gin.HandlerFunc
	ShowBox            gin.HandlerFunc
	BoxLogin           gin.HandlerFunc
	BoxLoginPost       gin.HandlerFunc
	BoxStatus          gin.HandlerFunc
	DownloadBox        gin.HandlerFunc
	DownloadFile       gin.HandlerFunc
	DownloadThumbnail  gin.HandlerFunc
	CreateBox          gin.HandlerFunc
	ManifestFileUpload gin.HandlerFunc
	FileStatusUpdate   gin.HandlerFunc
	DirectBoxUpload    gin.HandlerFunc
	LegacyUpload       gin.HandlerFunc
}

func Register(router *gin.Engine, handlers Handlers) {
	router.GET("/", handlers.Index)

	router.GET("/box/:id", handlers.ShowBox)
	router.GET("/box/:id/login", handlers.BoxLogin)
	router.GET("/box/:id/status", handlers.BoxStatus)
	router.GET("/box/:id/download", handlers.DownloadBox)
	router.GET("/box/:id/files/:filename", handlers.DownloadFile)
	router.GET("/box/:id/thumbnails/:file_id", handlers.DownloadThumbnail)

	router.POST("/box", handlers.CreateBox)
	router.POST("/box/:id/login", handlers.BoxLoginPost)
	router.POST("/box/:id/files/:file_id/upload", handlers.ManifestFileUpload)
	router.POST("/box/:id/files/:file_id/status", handlers.FileStatusUpdate)

	// Legacy upload routes are kept for compatibility with older clients.
	router.POST("/box/:id/upload", handlers.DirectBoxUpload)
	router.POST("/upload", handlers.LegacyUpload)
}
