mirror of
https://github.com/rclone/rclone.git
synced 2025-12-11 22:14:05 +01:00
pikpak: improve getFile() usage
Previously, `getFile()` was called indiscriminately during uploads, moves, and download link generation. This could lead to users with download limit causing subsequent operations like uploads and moves to fail. This PR optimizes the use of getFile(), by only calling it when it's strictly necessary.
This commit is contained in:
@@ -1016,21 +1016,24 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
dstObj.id = srcObj.id
|
||||
|
||||
var info *api.File
|
||||
if srcLeaf != dstLeaf {
|
||||
// Rename
|
||||
info, err = f.renameObject(ctx, srcObj.id, dstLeaf)
|
||||
info, err := f.renameObject(ctx, srcObj.id, dstLeaf)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("move: couldn't rename moved file: %w", err)
|
||||
}
|
||||
err = dstObj.setMetaData(info)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
// Update info
|
||||
info, err = f.getFile(ctx, dstObj.id)
|
||||
err = dstObj.readMetaData(ctx)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("move: couldn't update moved file: %w", err)
|
||||
return nil, fmt.Errorf("move: couldn't locate moved file: %w", err)
|
||||
}
|
||||
}
|
||||
return dstObj, dstObj.setMetaData(info)
|
||||
return dstObj, nil
|
||||
}
|
||||
|
||||
// copy objects
|
||||
@@ -1143,7 +1146,7 @@ func (f *Fs) uploadByForm(ctx context.Context, in io.Reader, name string, size i
|
||||
return
|
||||
}
|
||||
|
||||
func (f *Fs) uploadByResumable(ctx context.Context, in io.Reader, resumable *api.Resumable, options ...fs.OpenOption) (err error) {
|
||||
func (f *Fs) uploadByResumable(ctx context.Context, in io.Reader, resumable *api.Resumable) (err error) {
|
||||
p := resumable.Params
|
||||
endpoint := strings.Join(strings.Split(p.Endpoint, ".")[1:], ".") // "mypikpak.com"
|
||||
|
||||
@@ -1206,7 +1209,7 @@ func (f *Fs) upload(ctx context.Context, in io.Reader, leaf, dirID, sha1Str stri
|
||||
if uploadType == api.UploadTypeForm && newfile.Form != nil {
|
||||
err = f.uploadByForm(ctx, in, req.Name, size, newfile.Form, options...)
|
||||
} else if uploadType == api.UploadTypeResumable && newfile.Resumable != nil {
|
||||
err = f.uploadByResumable(ctx, in, newfile.Resumable, options...)
|
||||
err = f.uploadByResumable(ctx, in, newfile.Resumable)
|
||||
} else {
|
||||
return nil, fmt.Errorf("unable to proceed upload: %+v", newfile)
|
||||
}
|
||||
@@ -1214,10 +1217,7 @@ func (f *Fs) upload(ctx context.Context, in io.Reader, leaf, dirID, sha1Str stri
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to upload: %w", err)
|
||||
}
|
||||
// refresh uploaded file info
|
||||
// Compared to `newfile.File` this upgrades several fields...
|
||||
// audit, links, modified_time, phase, revision, and web_content_link
|
||||
return f.getFile(ctx, newfile.File.ID)
|
||||
return newfile.File, nil
|
||||
}
|
||||
|
||||
// Put the object
|
||||
|
||||
Reference in New Issue
Block a user