diff --git a/server/controllers/file/mkdir.go b/server/controllers/file/mkdir.go new file mode 100644 index 00000000..fb6dbc65 --- /dev/null +++ b/server/controllers/file/mkdir.go @@ -0,0 +1,34 @@ +package file + +import ( + "github.com/Xhofe/alist/drivers/operate" + "github.com/Xhofe/alist/server/common" + "github.com/gin-gonic/gin" +) + +type MkdirReq struct { + Path string `json:"path"` +} + +func Mkdir(c *gin.Context) { + var req MkdirReq + if err := c.ShouldBind(&req); err != nil { + common.ErrorResp(c, err, 400) + return + } + account, path_, driver, err := common.ParsePath(req.Path) + if err != nil { + common.ErrorResp(c, err, 500) + return + } + if path_ == "/" { + common.ErrorStrResp(c, "Folder name can't be empty", 400) + return + } + err = operate.MakeDir(driver, account, path_, true) + if err != nil { + common.ErrorResp(c, err, 500) + return + } + common.SuccessResp(c) +} diff --git a/server/controllers/file/raname.go b/server/controllers/file/raname.go new file mode 100644 index 00000000..a5512539 --- /dev/null +++ b/server/controllers/file/raname.go @@ -0,0 +1,36 @@ +package file + +import ( + "github.com/Xhofe/alist/drivers/operate" + "github.com/Xhofe/alist/server/common" + "github.com/Xhofe/alist/utils" + "github.com/gin-gonic/gin" +) + +type RenameReq struct { + Path string `json:"path"` + Name string `json:"name"` +} + +func Rename(c *gin.Context) { + var req RenameReq + if err := c.ShouldBind(&req); err != nil { + common.ErrorResp(c, err, 400) + return + } + account, path_, driver, err := common.ParsePath(req.Path) + if err != nil { + common.ErrorResp(c, err, 500) + return + } + if path_ == "/" { + common.ErrorStrResp(c, "Can't account name here", 400) + return + } + err = operate.Move(driver, account, path_, utils.Join(utils.Dir(path_), req.Name), true) + if err != nil { + common.ErrorResp(c, err, 500) + return + } + common.SuccessResp(c) +} diff --git a/server/controllers/proxy.go b/server/controllers/proxy.go index bf96a5e2..e37f526e 100644 --- a/server/controllers/proxy.go +++ b/server/controllers/proxy.go @@ -128,6 +128,7 @@ func Proxy(c *gin.Context) { defer func() { _ = res.Body.Close() }() + log.Debugf("proxy status: %d", res.StatusCode) w.WriteHeader(res.StatusCode) for h, v := range res.Header { w.Header()[h] = v diff --git a/server/router.go b/server/router.go index 742ff196..5b0a4417 100644 --- a/server/router.go +++ b/server/router.go @@ -51,6 +51,8 @@ func InitApiRouter(r *gin.Engine) { admin.POST("/link", controllers.Link) admin.DELETE("/files", file.DeleteFiles) + admin.POST("/mkdir", file.Mkdir) + admin.POST("rename", file.Rename) } WebDav(r) Static(r)