dropbox: Retry link without expiry

Dropbox only allows public links with expiry for certain account types.
Rather than erroring for other accounts, retry without expiry.
This commit is contained in:
Dave Vasilevsky
2025-02-15 19:26:09 -05:00
committed by Nick Craig-Wood
parent 904c9b2e24
commit 4fc9583feb
2 changed files with 10 additions and 4 deletions

View File

@@ -1333,6 +1333,16 @@ func (f *Fs) PublicLink(ctx context.Context, remote string, expire fs.Duration,
return shouldRetry(ctx, err)
})
if err != nil && createArg.Settings.Expires != nil && strings.Contains(err.Error(), sharing.SharedLinkSettingsErrorNotAuthorized) {
// Some plans can't create links with expiry
fs.Debugf(absPath, "can't create link with expiry, trying without")
createArg.Settings.Expires = nil
err = f.pacer.Call(func() (bool, error) {
linkRes, err = f.sharing.CreateSharedLinkWithSettings(&createArg)
return shouldRetry(ctx, err)
})
}
if err != nil && strings.Contains(err.Error(),
sharing.CreateSharedLinkWithSettingsErrorSharedLinkAlreadyExists) {
fs.Debugf(absPath, "has a public link already, attempting to retrieve it")