mirror of
https://github.com/gilbertchen/duplicacy
synced 2025-12-06 00:03:38 +00:00
Compare commits
4 Commits
8298036dbd
...
37001d622f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
37001d622f | ||
|
|
065ae50868 | ||
|
|
4056618204 | ||
|
|
ee344a0abe |
@@ -201,7 +201,12 @@ func (client *OneDriveClient) call(url string, method string, input interface{},
|
||||
continue
|
||||
} else if response.StatusCode == 409 {
|
||||
return nil, 0, OneDriveError{Status: response.StatusCode, Message: "Conflict"}
|
||||
} else if response.StatusCode > 401 && response.StatusCode != 404 {
|
||||
} else if response.StatusCode >= 400 && response.StatusCode != 404 && !(
|
||||
method == "PATCH" && response.StatusCode == 400) {
|
||||
// MoveFile uses PATCH method, and it unfortunately relies on
|
||||
// processing 400 errors for detecting non-existent target
|
||||
// folders. So in this case we bubble up 400 errors to be handled
|
||||
// in MoveFile
|
||||
delay := int((rand.Float32() * 0.5 + 0.5) * 1000.0 * float32(backoff))
|
||||
if backoffList, found := response.Header["Retry-After"]; found && len(backoffList) > 0 {
|
||||
retryAfter, _ := strconv.Atoi(backoffList[0])
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"regexp"
|
||||
|
||||
"github.com/ncw/swift/v2"
|
||||
)
|
||||
@@ -42,13 +43,6 @@ func CreateSwiftStorage(storageURL string, key string, threads int) (storage *Sw
|
||||
}
|
||||
}
|
||||
|
||||
// Take out the user name if there is one
|
||||
if strings.Contains(storageURL, "@") {
|
||||
userAndURL := strings.Split(storageURL, "@")
|
||||
arguments["user"] = userAndURL[0]
|
||||
storageURL = userAndURL[1]
|
||||
}
|
||||
|
||||
// The version is used to split authURL and container/path
|
||||
versions := []string{"/v1/", "/v1.0/", "/v2/", "/v2.0/", "/v3/", "/v3.0/", "/v4/", "/v4.0/"}
|
||||
storageDir := ""
|
||||
@@ -60,6 +54,17 @@ func CreateSwiftStorage(storageURL string, key string, threads int) (storage *Sw
|
||||
}
|
||||
}
|
||||
|
||||
// Take out the user name if there is one
|
||||
if strings.Contains(storageURL, "@") {
|
||||
// Use regex to split the username and the rest of the URL
|
||||
lineRegex := regexp.MustCompile(`^(.+)@([^@]+)$`)
|
||||
match := lineRegex.FindStringSubmatch(storageURL)
|
||||
if match != nil {
|
||||
arguments["user"] = match[1]
|
||||
storageURL = match[2]
|
||||
}
|
||||
}
|
||||
|
||||
// If no container/path is specified, find them from the arguments
|
||||
if storageDir == "" {
|
||||
storageDir = arguments["storage_dir"]
|
||||
|
||||
Reference in New Issue
Block a user