45 lines
1.5 KiB
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)
|
|
}
|
|
}
|