resource_manager/api/routes.go

53 lines
1.2 KiB
Go

package api
import (
"github.com/gin-gonic/gin"
"log"
"os"
"resource-manager/domain/cache"
"resource-manager/domain/resource"
"time"
)
func SetupServer() *gin.Engine {
server := createServer()
RegisterRoutes(server)
return server
}
func createServer() *gin.Engine {
server := gin.New()
server.NoRoute(NoRoute())
server.NoMethod(NoMethod())
server.Use(gin.Recovery(), Auth())
return server
}
func RegisterRoutes(server *gin.Engine) {
cacheManager := cache.NewManager()
expiration := loadExpiration()
log.Println("Presign | expiration set to " + expiration.String())
resourceManager := resource.NewManager(cacheManager, expiration)
v1Group := server.Group("/api/v1/resources", Secure("basic", "api"))
v1Group.POST("", HandleUpload(resourceManager))
v1Group.GET("", HandleDownload(resourceManager))
v1Group.GET("presign", HandlePresign(resourceManager))
v1Group.PUT("copy", HandleCopy(resourceManager))
v1Group.DELETE("", HandleDelete(resourceManager))
}
func loadExpiration() time.Duration {
if value := os.Getenv("PRESIGN_DURATION"); value != "" {
duration, err := time.ParseDuration(value)
if err != nil {
return duration
}
}
// default duration
return 1 * time.Hour
}