feat(handler): add upload, file, and folder handlers with routes
Add UploadHandler (5 endpoints), FileHandler (4 endpoints), FolderHandler (4 endpoints) with Gin route registration in server.go. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -34,8 +34,30 @@ type ApplicationHandler interface {
|
||||
SubmitApplication(c *gin.Context)
|
||||
}
|
||||
|
||||
type UploadHandler interface {
|
||||
InitUpload(c *gin.Context)
|
||||
GetUploadStatus(c *gin.Context)
|
||||
UploadChunk(c *gin.Context)
|
||||
CompleteUpload(c *gin.Context)
|
||||
CancelUpload(c *gin.Context)
|
||||
}
|
||||
|
||||
type FileHandler interface {
|
||||
ListFiles(c *gin.Context)
|
||||
GetFile(c *gin.Context)
|
||||
DownloadFile(c *gin.Context)
|
||||
DeleteFile(c *gin.Context)
|
||||
}
|
||||
|
||||
type FolderHandler interface {
|
||||
CreateFolder(c *gin.Context)
|
||||
GetFolder(c *gin.Context)
|
||||
ListFolders(c *gin.Context)
|
||||
DeleteFolder(c *gin.Context)
|
||||
}
|
||||
|
||||
// NewRouter creates a Gin engine with all API v1 routes registered with real handlers.
|
||||
func NewRouter(jobH JobHandler, clusterH ClusterHandler, appH ApplicationHandler, logger *zap.Logger) *gin.Engine {
|
||||
func NewRouter(jobH JobHandler, clusterH ClusterHandler, appH ApplicationHandler, uploadH UploadHandler, fileH FileHandler, folderH FolderHandler, logger *zap.Logger) *gin.Engine {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
r := gin.New()
|
||||
r.Use(gin.Recovery())
|
||||
@@ -68,6 +90,32 @@ func NewRouter(jobH JobHandler, clusterH ClusterHandler, appH ApplicationHandler
|
||||
apps.DELETE("/:id", appH.DeleteApplication)
|
||||
apps.POST("/:id/submit", appH.SubmitApplication)
|
||||
|
||||
files := v1.Group("/files")
|
||||
|
||||
if uploadH != nil {
|
||||
uploads := files.Group("/uploads")
|
||||
uploads.POST("", uploadH.InitUpload)
|
||||
uploads.GET("/:id", uploadH.GetUploadStatus)
|
||||
uploads.PUT("/:id/chunks/:index", uploadH.UploadChunk)
|
||||
uploads.POST("/:id/complete", uploadH.CompleteUpload)
|
||||
uploads.DELETE("/:id", uploadH.CancelUpload)
|
||||
}
|
||||
|
||||
if fileH != nil {
|
||||
files.GET("", fileH.ListFiles)
|
||||
files.GET("/:id", fileH.GetFile)
|
||||
files.GET("/:id/download", fileH.DownloadFile)
|
||||
files.DELETE("/:id", fileH.DeleteFile)
|
||||
}
|
||||
|
||||
if folderH != nil {
|
||||
folders := files.Group("/folders")
|
||||
folders.POST("", folderH.CreateFolder)
|
||||
folders.GET("", folderH.ListFolders)
|
||||
folders.GET("/:id", folderH.GetFolder)
|
||||
folders.DELETE("/:id", folderH.DeleteFolder)
|
||||
}
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
@@ -104,6 +152,26 @@ func registerPlaceholderRoutes(v1 *gin.RouterGroup) {
|
||||
apps.PUT("/:id", notImplemented)
|
||||
apps.DELETE("/:id", notImplemented)
|
||||
apps.POST("/:id/submit", notImplemented)
|
||||
|
||||
files := v1.Group("/files")
|
||||
|
||||
uploads := files.Group("/uploads")
|
||||
uploads.POST("", notImplemented)
|
||||
uploads.GET("/:id", notImplemented)
|
||||
uploads.PUT("/:id/chunks/:index", notImplemented)
|
||||
uploads.POST("/:id/complete", notImplemented)
|
||||
uploads.DELETE("/:id", notImplemented)
|
||||
|
||||
files.GET("", notImplemented)
|
||||
files.GET("/:id", notImplemented)
|
||||
files.GET("/:id/download", notImplemented)
|
||||
files.DELETE("/:id", notImplemented)
|
||||
|
||||
folders := files.Group("/folders")
|
||||
folders.POST("", notImplemented)
|
||||
folders.GET("", notImplemented)
|
||||
folders.GET("/:id", notImplemented)
|
||||
folders.DELETE("/:id", notImplemented)
|
||||
}
|
||||
|
||||
func notImplemented(c *gin.Context) {
|
||||
|
||||
Reference in New Issue
Block a user