mirror of
https://github.com/halejohn/Cloudreve.git
synced 2026-01-26 09:34:57 +08:00
Feat: delete objects
This commit is contained in:
@@ -19,7 +19,7 @@ func CreateDirectory(c *gin.Context) {
|
||||
// ListDirectory 列出目录下内容
|
||||
func ListDirectory(c *gin.Context) {
|
||||
var service explorer.DirectoryService
|
||||
if err := c.ShouldBindQuery(&service); err == nil {
|
||||
if err := c.ShouldBindUri(&service); err == nil {
|
||||
res := service.ListDirectory(c)
|
||||
c.JSON(200, res)
|
||||
} else {
|
||||
|
||||
@@ -38,7 +38,7 @@ func FileUploadStream(c *gin.Context) {
|
||||
|
||||
// 非本地策略时拒绝上传
|
||||
if user, ok := c.Get("user"); ok && user.(*model.User).Policy.Type != "local" {
|
||||
c.JSON(200, serializer.Err(serializer.CodePolicyNotAllowed, "当前上传策略无法使用", nil))
|
||||
c.JSON(200, serializer.Err(serializer.CodePolicyNotAllowed, "当前存储策略无法使用", nil))
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
22
routers/controllers/objects.go
Normal file
22
routers/controllers/objects.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/HFO4/cloudreve/service/explorer"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// Delete 删除文件或目录
|
||||
func Delete(c *gin.Context) {
|
||||
// 创建上下文
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
var service explorer.ItemService
|
||||
if err := c.ShouldBindJSON(&service); err == nil {
|
||||
res := service.Delete(ctx, c)
|
||||
c.JSON(200, res)
|
||||
} else {
|
||||
c.JSON(200, ErrorResponse(err))
|
||||
}
|
||||
}
|
||||
@@ -72,7 +72,13 @@ func InitRouter() *gin.Engine {
|
||||
// 创建目录
|
||||
directory.PUT("", controllers.CreateDirectory)
|
||||
// 列出目录下内容
|
||||
directory.GET("", controllers.ListDirectory)
|
||||
directory.GET("*path", controllers.ListDirectory)
|
||||
}
|
||||
|
||||
// 对象,文件和目录的抽象
|
||||
object := auth.Group("object")
|
||||
{
|
||||
object.DELETE("", controllers.Delete)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ func TestUserSession(t *testing.T) {
|
||||
AddRow("login_captcha", "0", "login"),
|
||||
userRows: sqlmock.NewRows([]string{"email", "nick", "password", "options"}).
|
||||
AddRow("admin@cloudreve.org", "admin", "CKLmDKa1C9SD64vU:76adadd4fd4bad86959155f6f7bc8993c94e7adf", "{}"), policyRows: sqlmock.NewRows([]string{"name", "type", "options"}).
|
||||
AddRow("默认上传策略", "local", "{\"op_name\":\"123\"}"),
|
||||
AddRow("默认存储策略", "local", "{\"op_name\":\"123\"}"),
|
||||
reqBody: `{"userName":"admin@cloudreve.org","captchaCode":"captchaCode","Password":"admin"}`,
|
||||
expected: serializer.BuildUserResponse(model.User{
|
||||
Email: "admin@cloudreve.org",
|
||||
@@ -95,7 +95,7 @@ func TestUserSession(t *testing.T) {
|
||||
userRows: sqlmock.NewRows([]string{"email", "nick", "password", "options"}).
|
||||
AddRow("admin@cloudreve.org", "admin", "CKLmDKa1C9SD64vU:76adadd4fd4bad86959155f6f7bc8993c94e7adf", "{}"),
|
||||
policyRows: sqlmock.NewRows([]string{"name", "type", "options"}).
|
||||
AddRow("默认上传策略", "local", "{\"op_name\":\"123\"}"),
|
||||
AddRow("默认存储策略", "local", "{\"op_name\":\"123\"}"),
|
||||
reqBody: `{"userName":"admin@cloudreve.org","captchaCode":"captchaCode","Password":"admin"}`,
|
||||
expected: serializer.ParamErr("验证码错误", nil),
|
||||
},
|
||||
@@ -106,7 +106,7 @@ func TestUserSession(t *testing.T) {
|
||||
userRows: sqlmock.NewRows([]string{"email", "nick", "password", "options"}).
|
||||
AddRow("admin@cloudreve.org", "admin", "CKLmDKa1C9SD64vU:76adadd4fd4bad86959155f6f7bc8993c94e7adf", "{}"),
|
||||
policyRows: sqlmock.NewRows([]string{"name", "type", "options"}).
|
||||
AddRow("默认上传策略", "local", "{\"op_name\":\"123\"}"),
|
||||
AddRow("默认存储策略", "local", "{\"op_name\":\"123\"}"),
|
||||
reqBody: `{"userName":"admin@cloudreve.org","captchaCode":"captchaCode","Password":"admin123"}`,
|
||||
expected: serializer.Err(401, "用户邮箱或密码错误", nil),
|
||||
},
|
||||
@@ -122,7 +122,7 @@ func TestUserSession(t *testing.T) {
|
||||
userRows: sqlmock.NewRows([]string{"email", "nick", "password", "options", "status"}).
|
||||
AddRow("admin@cloudreve.org", "admin", "CKLmDKa1C9SD64vU:76adadd4fd4bad86959155f6f7bc8993c94e7adf", "{}", model.Baned),
|
||||
policyRows: sqlmock.NewRows([]string{"name", "type", "options"}).
|
||||
AddRow("默认上传策略", "local", "{\"op_name\":\"123\"}"),
|
||||
AddRow("默认存储策略", "local", "{\"op_name\":\"123\"}"),
|
||||
reqBody: `{"userName":"admin@cloudreve.org","captchaCode":"captchaCode","Password":"admin"}`,
|
||||
expected: serializer.Err(403, "该账号已被封禁", nil),
|
||||
},
|
||||
@@ -133,7 +133,7 @@ func TestUserSession(t *testing.T) {
|
||||
userRows: sqlmock.NewRows([]string{"email", "nick", "password", "options", "status"}).
|
||||
AddRow("admin@cloudreve.org", "admin", "CKLmDKa1C9SD64vU:76adadd4fd4bad86959155f6f7bc8993c94e7adf", "{}", model.NotActivicated),
|
||||
policyRows: sqlmock.NewRows([]string{"name", "type", "options"}).
|
||||
AddRow("默认上传策略", "local", "{\"op_name\":\"123\"}"),
|
||||
AddRow("默认存储策略", "local", "{\"op_name\":\"123\"}"),
|
||||
reqBody: `{"userName":"admin@cloudreve.org","captchaCode":"captchaCode","Password":"admin"}`,
|
||||
expected: serializer.Err(403, "该账号未激活", nil),
|
||||
},
|
||||
@@ -273,7 +273,7 @@ func TestListDirectoryRoute(t *testing.T) {
|
||||
// 成功
|
||||
req, _ := http.NewRequest(
|
||||
"GET",
|
||||
"/api/v3/directory?path=/",
|
||||
"/api/v3/directory/",
|
||||
nil,
|
||||
)
|
||||
middleware.SessionMock = map[string]interface{}{"user_id": 1}
|
||||
@@ -286,20 +286,6 @@ func TestListDirectoryRoute(t *testing.T) {
|
||||
|
||||
w.Body.Reset()
|
||||
|
||||
// 缺少参数
|
||||
req, _ = http.NewRequest(
|
||||
"GET",
|
||||
"/api/v3/directory",
|
||||
nil,
|
||||
)
|
||||
middleware.SessionMock = map[string]interface{}{"user_id": 1}
|
||||
router.ServeHTTP(w, req)
|
||||
asserts.Equal(200, w.Code)
|
||||
resJSON = &serializer.Response{}
|
||||
err = json.Unmarshal(w.Body.Bytes(), resJSON)
|
||||
asserts.NoError(err)
|
||||
asserts.NotEqual(0, resJSON.Code)
|
||||
|
||||
}
|
||||
|
||||
func TestLocalFileUpload(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user