fix(misskey): folderId format validation and root directory handling (#1647)

fix(misskey): Fix folderId format validation and root directory handling
This commit is contained in:
VXTLS
2025-11-20 23:18:54 -05:00
committed by GitHub
parent 72e2ae1f14
commit 3989d35abd

View File

@@ -57,18 +57,22 @@ func setBody(body interface{}) base.ReqCallback {
} }
func handleFolderId(dir model.Obj) interface{} { func handleFolderId(dir model.Obj) interface{} {
if dir.GetID() == "" { if isRootFolder(dir) {
return nil return nil // Root folder doesn't need folderId
} }
return dir.GetID() return dir.GetID()
} }
func isRootFolder(dir model.Obj) bool {
return dir.GetID() == ""
}
// API layer methods // API layer methods
func (d *Misskey) getFiles(dir model.Obj) ([]model.Obj, error) { func (d *Misskey) getFiles(dir model.Obj) ([]model.Obj, error) {
var files []MFile var files []MFile
var body map[string]string var body map[string]string
if dir.GetPath() != "/" { if !isRootFolder(dir) {
body = map[string]string{"folderId": dir.GetID()} body = map[string]string{"folderId": dir.GetID()}
} else { } else {
body = map[string]string{} body = map[string]string{}
@@ -85,7 +89,7 @@ func (d *Misskey) getFiles(dir model.Obj) ([]model.Obj, error) {
func (d *Misskey) getFolders(dir model.Obj) ([]model.Obj, error) { func (d *Misskey) getFolders(dir model.Obj) ([]model.Obj, error) {
var folders []MFolder var folders []MFolder
var body map[string]string var body map[string]string
if dir.GetPath() != "/" { if !isRootFolder(dir) {
body = map[string]string{"folderId": dir.GetID()} body = map[string]string{"folderId": dir.GetID()}
} else { } else {
body = map[string]string{} body = map[string]string{}
@@ -197,16 +201,24 @@ func (d *Misskey) put(ctx context.Context, dstDir model.Obj, stream model.FileSt
Reader: stream, Reader: stream,
UpdateProgress: up, UpdateProgress: up,
}) })
req := base.RestyClient.R().
SetContext(ctx). // Build form data, only add folderId if not root folder
SetFileReader("file", stream.GetName(), reader). formData := map[string]string{
SetFormData(map[string]string{
"folderId": handleFolderId(dstDir).(string),
"name": stream.GetName(), "name": stream.GetName(),
"comment": "", "comment": "",
"isSensitive": "false", "isSensitive": "false",
"force": "false", "force": "false",
}). }
folderId := handleFolderId(dstDir)
if folderId != nil {
formData["folderId"] = folderId.(string)
}
req := base.RestyClient.R().
SetContext(ctx).
SetFileReader("file", stream.GetName(), reader).
SetFormData(formData).
SetResult(&file). SetResult(&file).
SetAuthToken(d.AccessToken) SetAuthToken(d.AccessToken)