[server][api] rename details => ls, remove ls, metadata

This commit is contained in:
Abhishek Shroff
2024-10-16 21:41:46 +05:30
parent 35b899bd1b
commit 1d8ec3f37a
4 changed files with 51 additions and 98 deletions
+47
View File
@@ -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
}
+1 -52
View File
@@ -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 {
+3 -3
View File
@@ -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),
})
}