robotfs/api_directory.go
2025-05-15 18:09:59 +08:00

85 lines
1.7 KiB
Go

package main
import (
"gosvc/httpserver"
"gosvc/validator"
"robotfs/utils"
)
type Entry struct {
Name string `json:"name"`
IsDir bool `json:"is_dir"`
}
type ListResult struct {
Entries []Entry `json:"entries"`
LastFileName string `json:"last_file_name"`
}
type MkdirParams struct {
Path string
}
func (m *MkdirParams) Validate() error {
return validator.WithIf(
m.Path == "", "Path is empty",
).Validate()
}
func (s *Service) HandleMkdir(
req *httpserver.Request,
resp *httpserver.Response,
) *httpserver.Response {
params := req.Binded.(*MkdirParams)
fullPath := utils.FullPath(params.Path)
err := s.FileSystemManager.MakeDirectory(req.Context(), fullPath)
if err != nil {
return resp.InternalServerError("mkdir failed, " + err.Error())
}
return resp.NoContent()
}
func (s *Service) HandleListDirectory(
req *httpserver.Request,
resp *httpserver.Response,
) *httpserver.Response {
// path := req.QueryString("path")
// startFileName := req.QueryString("startFileName")
// limit := req.QueryInt("limit")
entries := []Entry{
{Name: "file1.txt", IsDir: false},
{Name: "folder1", IsDir: true},
}
lastFileName := "file1.txt"
result := ListResult{
Entries: entries,
LastFileName: lastFileName,
}
return resp.OK(result).JSON()
}
func (s *Service) HandleDeleteDirectory(
req *httpserver.Request,
resp *httpserver.Response,
) *httpserver.Response {
return resp.NoContent()
}
func (s *Service) HandleRenameDirectory(
req *httpserver.Request,
resp *httpserver.Response,
) *httpserver.Response {
return resp.NoContent()
}
func (s *Service) HandleCopyDirectory(
req *httpserver.Request,
resp *httpserver.Response,
) *httpserver.Response {
return resp.NoContent()
}