mirror of
https://github.com/Damillora/phoebe.git
synced 2025-03-10 05:57:22 +00:00
55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package app
|
|
|
|
import (
|
|
"net/http"
|
|
"path/filepath"
|
|
|
|
"github.com/Damillora/Shioriko/pkg/config"
|
|
"github.com/Damillora/Shioriko/pkg/database"
|
|
"github.com/Damillora/Shioriko/pkg/middleware"
|
|
"github.com/Damillora/Shioriko/pkg/models"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func InitializeBlobRoutes(g *gin.Engine) {
|
|
protected := g.Group("/api/blob").Use(middleware.AuthMiddleware())
|
|
{
|
|
protected.POST("/upload", uploadBlob)
|
|
}
|
|
|
|
}
|
|
|
|
func uploadBlob(c *gin.Context) {
|
|
dataDir := config.CurrentConfig.DataDirectory
|
|
// Source
|
|
file, err := c.FormFile("file")
|
|
|
|
if err != nil {
|
|
c.JSON(http.StatusBadRequest, models.ErrorResponse{
|
|
Code: http.StatusBadRequest,
|
|
Message: err.Error(),
|
|
})
|
|
}
|
|
id := uuid.NewString()
|
|
filename := id + filepath.Ext(file.Filename)
|
|
|
|
err = c.SaveUploadedFile(file, filepath.Join(dataDir, filename))
|
|
if err != nil {
|
|
c.JSON(http.StatusBadRequest, models.ErrorResponse{
|
|
Code: http.StatusBadRequest,
|
|
Message: err.Error(),
|
|
})
|
|
}
|
|
|
|
blob := database.Blob{
|
|
ID: id,
|
|
FilePath: filename,
|
|
}
|
|
database.DB.Create(&blob)
|
|
|
|
c.JSON(http.StatusOK, models.BlobResponse{
|
|
ID: id,
|
|
})
|
|
}
|