mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-05-07 04:39:25 -05:00
[server][api] rename details => ls, remove ls, metadata
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package fs
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
"github.com/shroff/phylum/server/internal/api/auth"
|
||||
"github.com/shroff/phylum/server/internal/core"
|
||||
)
|
||||
|
||||
type ResourceLsResponse struct {
|
||||
Metadata core.Resource `json:"metadata"`
|
||||
Children []core.Resource `json:"children,omitempty"`
|
||||
InheritedPermissions string `json:"inherited,omitempty"`
|
||||
}
|
||||
|
||||
func handleResourceLsRoute(c *gin.Context) {
|
||||
resourceID, err := uuid.Parse(c.Param("id"))
|
||||
if err != nil {
|
||||
panic(errResourceIDInvalid)
|
||||
}
|
||||
|
||||
fs := auth.GetFileSystem(c)
|
||||
r, err := fs.ResourceByID(resourceID)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
c.JSON(200, LsResponseFromResource(fs, r))
|
||||
}
|
||||
|
||||
func LsResponseFromResource(fs core.FileSystem, r core.Resource) ResourceLsResponse {
|
||||
response := ResourceLsResponse{
|
||||
Metadata: r,
|
||||
InheritedPermissions: r.InheritedPermissions,
|
||||
}
|
||||
if r.Dir {
|
||||
children, err := fs.ReadDir(r)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
response.Children = make([]core.Resource, len(children))
|
||||
for i, c := range children {
|
||||
response.Children[i] = c
|
||||
}
|
||||
}
|
||||
return response
|
||||
}
|
||||
@@ -1,50 +1,7 @@
|
||||
package fs
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/shroff/phylum/server/internal/core"
|
||||
)
|
||||
|
||||
type ResourceMetadata struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
Parent *uuid.UUID `json:"parent"`
|
||||
Name string `json:"name"`
|
||||
Dir bool `json:"dir"`
|
||||
Modified time.Time `json:"modified"`
|
||||
Deleted *time.Time `json:"deleted"`
|
||||
ContentType string `json:"ctype"`
|
||||
Size int64 `json:"size"`
|
||||
Etag string `json:"etag"`
|
||||
Permissions string `json:"permissions"`
|
||||
}
|
||||
|
||||
type DiskUsageResponse struct {
|
||||
TotalSize int64 `json:"size"`
|
||||
Files int64 `json:"files"`
|
||||
Dirs int64 `json:"dirs"`
|
||||
}
|
||||
|
||||
type ResourceDetailResponse struct {
|
||||
Metadata core.Resource `json:"metadata"`
|
||||
Children []core.Resource `json:"children,omitempty"`
|
||||
InheritedPermissions string `json:"inherited,omitempty"`
|
||||
}
|
||||
|
||||
func DetailedResponseFromResource(fs core.FileSystem, r core.Resource) ResourceDetailResponse {
|
||||
response := ResourceDetailResponse{}
|
||||
response.Metadata = r
|
||||
if r.Dir {
|
||||
children, err := fs.ReadDir(r)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
response.Children = make([]core.Resource, len(children))
|
||||
for i, c := range children {
|
||||
response.Children[i] = c
|
||||
}
|
||||
}
|
||||
response.InheritedPermissions = r.InheritedPermissions
|
||||
return response
|
||||
}
|
||||
|
||||
@@ -30,10 +30,8 @@ type resourceMoveParams struct {
|
||||
|
||||
func SetupRoutes(r *gin.RouterGroup) {
|
||||
group := r.Group("/resources")
|
||||
group.GET("/ls/:id", handleResourceLsRoute)
|
||||
group.GET("/du/:id", handleResourceDiskUsageRoute)
|
||||
group.GET("/metadata/:id", handleResourceMetadataRoute)
|
||||
group.GET("/details/:id", handleResourceDetailsRoute)
|
||||
group.GET("/ls/:id", handleResourceLsRoute)
|
||||
group.GET("/contents/:id", handleResourceContentsRoute)
|
||||
group.POST("/mkdir/:id", handleResourceMkdirRoute)
|
||||
group.POST("/move/:id", handleResourceMoveRoute)
|
||||
@@ -41,40 +39,6 @@ func SetupRoutes(r *gin.RouterGroup) {
|
||||
group.DELETE("/delete/:id", handleResourceDeleteRoute)
|
||||
}
|
||||
|
||||
func handleResourceMetadataRoute(c *gin.Context) {
|
||||
resourceId, err := uuid.Parse(c.Param("id"))
|
||||
if err != nil {
|
||||
panic(errResourceIDInvalid)
|
||||
}
|
||||
|
||||
fs := auth.GetFileSystem(c)
|
||||
resource, err := fs.ResourceByID(resourceId)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
c.JSON(200, resource)
|
||||
}
|
||||
|
||||
func handleResourceLsRoute(c *gin.Context) {
|
||||
resourceId, err := uuid.Parse(c.Param("id"))
|
||||
if err != nil {
|
||||
panic(errResourceIDInvalid)
|
||||
}
|
||||
|
||||
fs := auth.GetFileSystem(c)
|
||||
resource, err := fs.ResourceByID(resourceId)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
children, err := fs.ReadDir(resource)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
c.JSON(200, children)
|
||||
}
|
||||
|
||||
func handleResourceDiskUsageRoute(c *gin.Context) {
|
||||
resourceId, err := uuid.Parse(c.Param("id"))
|
||||
if err != nil {
|
||||
@@ -98,21 +62,6 @@ func handleResourceDiskUsageRoute(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
func handleResourceDetailsRoute(c *gin.Context) {
|
||||
resourceID, err := uuid.Parse(c.Param("id"))
|
||||
if err != nil {
|
||||
panic(errResourceIDInvalid)
|
||||
}
|
||||
|
||||
fs := auth.GetFileSystem(c)
|
||||
r, err := fs.ResourceByID(resourceID)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
c.JSON(200, DetailedResponseFromResource(fs, r))
|
||||
}
|
||||
|
||||
func handleResourceContentsRoute(c *gin.Context) {
|
||||
resourceID, err := uuid.Parse(c.Param("id"))
|
||||
if err != nil {
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
)
|
||||
|
||||
type myHomeResponse struct {
|
||||
User userResponse `json:"user"`
|
||||
Home fs.ResourceDetailResponse `json:"home"`
|
||||
User userResponse `json:"user"`
|
||||
Home fs.ResourceLsResponse `json:"home"`
|
||||
}
|
||||
|
||||
type mySharedResponse struct {
|
||||
@@ -32,7 +32,7 @@ func handleMyHomeRoute(c *gin.Context) {
|
||||
|
||||
c.JSON(200, myHomeResponse{
|
||||
User: responseFromUser(user),
|
||||
Home: fs.DetailedResponseFromResource(f, r),
|
||||
Home: fs.LsResponseFromResource(f, r),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user