mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-04-29 16:50:28 -05:00
40 lines
893 B
Go
40 lines
893 B
Go
package fs
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/google/uuid"
|
|
"github.com/shroff/phylum/server/internal/api/authenticator"
|
|
"github.com/shroff/phylum/server/internal/api/v1/responses"
|
|
"github.com/shroff/phylum/server/internal/core/fs"
|
|
)
|
|
|
|
type mvParams struct {
|
|
Target string `json:"target"`
|
|
Conflict fs.ResourceBindConflictResolution `json:"conflict"`
|
|
}
|
|
|
|
func handleMoveRequest(c *gin.Context) {
|
|
var params mvParams
|
|
err := c.ShouldBindJSON(¶ms)
|
|
if err != nil {
|
|
panic(errInvalidParams)
|
|
}
|
|
|
|
resourceID, err := uuid.Parse(c.Param("id"))
|
|
if err != nil {
|
|
panic(errResourceIDInvalid)
|
|
}
|
|
|
|
fs := authenticator.GetFileSystem(c)
|
|
r, err := fs.ResourceByID(resourceID)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
if r, _, err := r.Move(params.Target, params.Conflict); err != nil {
|
|
panic(err)
|
|
} else {
|
|
c.JSON(200, responses.ResourceFromFS(r))
|
|
}
|
|
}
|