veza/veza-backend-api/internal/api/routes_cloud.go

45 lines
1.5 KiB
Go

package api
import (
"github.com/gin-gonic/gin"
"veza-backend-api/internal/handlers"
"veza-backend-api/internal/services"
)
// setupCloudRoutes configure les routes Cloud Storage (v0.501 C1, v0.802 versioning/sharing)
func (r *APIRouter) setupCloudRoutes(router *gin.RouterGroup) {
if r.config == nil || r.config.AuthMiddleware == nil {
return
}
cloudService := services.NewCloudService(r.db.GormDB, r.logger, r.config.S3StorageService)
cloudHandler := handlers.NewCloudHandler(cloudService, r.logger)
// Public route: shared file access (no auth)
router.GET("/cloud/shared/:token", cloudHandler.GetSharedFile)
cloud := router.Group("/cloud")
cloud.Use(r.config.AuthMiddleware.RequireAuth())
r.applyCSRFProtection(cloud)
{
cloud.GET("/folders", cloudHandler.ListFolders)
cloud.POST("/folders", cloudHandler.CreateFolder)
cloud.PUT("/folders/:id", cloudHandler.RenameFolder)
cloud.DELETE("/folders/:id", cloudHandler.DeleteFolder)
cloud.GET("/files", cloudHandler.ListFiles)
cloud.POST("/files", cloudHandler.UploadFile)
cloud.GET("/files/:id", cloudHandler.GetFile)
cloud.DELETE("/files/:id", cloudHandler.DeleteFile)
cloud.GET("/files/:id/stream", cloudHandler.StreamFile)
cloud.POST("/files/:id/publish", cloudHandler.PublishAsTrack)
cloud.GET("/files/:id/versions", cloudHandler.ListVersions)
cloud.POST("/files/:id/versions", cloudHandler.CreateVersion)
cloud.POST("/files/:id/restore/:version", cloudHandler.RestoreVersion)
cloud.POST("/files/:id/share", cloudHandler.ShareFile)
cloud.GET("/quota", cloudHandler.GetQuota)
}
}