overdue
This commit is contained in:
77
.rclone_repo/backend/swift/auth.go
Executable file
77
.rclone_repo/backend/swift/auth.go
Executable file
@@ -0,0 +1,77 @@
|
||||
package swift
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/ncw/swift"
|
||||
)
|
||||
|
||||
// auth is an authenticator for swift. It overrides the StorageUrl
|
||||
// and AuthToken with fixed values.
|
||||
type auth struct {
|
||||
parentAuth swift.Authenticator
|
||||
storageURL string
|
||||
authToken string
|
||||
}
|
||||
|
||||
// newAuth creates a swift authenticator wrapper to override the
|
||||
// StorageUrl and AuthToken values.
|
||||
//
|
||||
// Note that parentAuth can be nil
|
||||
func newAuth(parentAuth swift.Authenticator, storageURL string, authToken string) *auth {
|
||||
return &auth{
|
||||
parentAuth: parentAuth,
|
||||
storageURL: storageURL,
|
||||
authToken: authToken,
|
||||
}
|
||||
}
|
||||
|
||||
// Request creates an http.Request for the auth - return nil if not needed
|
||||
func (a *auth) Request(c *swift.Connection) (*http.Request, error) {
|
||||
if a.parentAuth == nil {
|
||||
return nil, nil
|
||||
}
|
||||
return a.parentAuth.Request(c)
|
||||
}
|
||||
|
||||
// Response parses the http.Response
|
||||
func (a *auth) Response(resp *http.Response) error {
|
||||
if a.parentAuth == nil {
|
||||
return nil
|
||||
}
|
||||
return a.parentAuth.Response(resp)
|
||||
}
|
||||
|
||||
// The public storage URL - set Internal to true to read
|
||||
// internal/service net URL
|
||||
func (a *auth) StorageUrl(Internal bool) string { // nolint
|
||||
if a.storageURL != "" {
|
||||
return a.storageURL
|
||||
}
|
||||
if a.parentAuth == nil {
|
||||
return ""
|
||||
}
|
||||
return a.parentAuth.StorageUrl(Internal)
|
||||
}
|
||||
|
||||
// The access token
|
||||
func (a *auth) Token() string {
|
||||
if a.authToken != "" {
|
||||
return a.authToken
|
||||
}
|
||||
if a.parentAuth == nil {
|
||||
return ""
|
||||
}
|
||||
return a.parentAuth.Token()
|
||||
}
|
||||
|
||||
// The CDN url if available
|
||||
func (a *auth) CdnUrl() string { // nolint
|
||||
if a.parentAuth == nil {
|
||||
return ""
|
||||
}
|
||||
return a.parentAuth.CdnUrl()
|
||||
}
|
||||
|
||||
// Check the interfaces are satisfied
|
||||
var _ swift.Authenticator = (*auth)(nil)
|
||||
1049
.rclone_repo/backend/swift/swift.go
Executable file
1049
.rclone_repo/backend/swift/swift.go
Executable file
File diff suppressed because it is too large
Load Diff
25
.rclone_repo/backend/swift/swift_internal_test.go
Executable file
25
.rclone_repo/backend/swift/swift_internal_test.go
Executable file
@@ -0,0 +1,25 @@
|
||||
package swift
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestInternalUrlEncode(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
in string
|
||||
want string
|
||||
}{
|
||||
{"", ""},
|
||||
{"abcdefghijklmopqrstuvwxyz", "abcdefghijklmopqrstuvwxyz"},
|
||||
{"ABCDEFGHIJKLMOPQRSTUVWXYZ", "ABCDEFGHIJKLMOPQRSTUVWXYZ"},
|
||||
{"0123456789", "0123456789"},
|
||||
{"abc/ABC/123", "abc/ABC/123"},
|
||||
{" ", "%20%20%20"},
|
||||
{"&", "%26"},
|
||||
{"ߣ", "%C3%9F%C2%A3"},
|
||||
{"Vidéo Potato Sausage?&£.mkv", "Vid%C3%A9o%20Potato%20Sausage%3F%26%C2%A3.mkv"},
|
||||
} {
|
||||
got := urlEncode(test.in)
|
||||
if got != test.want {
|
||||
t.Logf("%q: want %q got %q", test.in, test.want, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
17
.rclone_repo/backend/swift/swift_test.go
Executable file
17
.rclone_repo/backend/swift/swift_test.go
Executable file
@@ -0,0 +1,17 @@
|
||||
// Test Swift filesystem interface
|
||||
package swift_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/ncw/rclone/backend/swift"
|
||||
"github.com/ncw/rclone/fstest/fstests"
|
||||
)
|
||||
|
||||
// TestIntegration runs integration tests against the remote
|
||||
func TestIntegration(t *testing.T) {
|
||||
fstests.Run(t, &fstests.Opt{
|
||||
RemoteName: "TestSwift:",
|
||||
NilObject: (*swift.Object)(nil),
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user