From 746516511d7bdd25d2a32e1850512a45ab02acc0 Mon Sep 17 00:00:00 2001 From: wiserain Date: Tue, 6 Aug 2024 02:52:27 +0900 Subject: [PATCH] pikpak: update to using AWS SDK v2 #4989 --- backend/pikpak/pikpak.go | 44 +++++++++++++++++++++------------------- go.mod | 3 +-- go.sum | 3 --- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/backend/pikpak/pikpak.go b/backend/pikpak/pikpak.go index a18fe573f..1a5d82a33 100644 --- a/backend/pikpak/pikpak.go +++ b/backend/pikpak/pikpak.go @@ -37,10 +37,11 @@ import ( "sync" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/s3/s3manager" + "github.com/aws/aws-sdk-go-v2/aws" + awsconfig "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/credentials" + "github.com/aws/aws-sdk-go-v2/feature/s3/manager" + "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/rclone/rclone/backend/pikpak/api" "github.com/rclone/rclone/fs" "github.com/rclone/rclone/fs/accounting" @@ -70,8 +71,8 @@ const ( taskWaitTime = 500 * time.Millisecond decayConstant = 2 // bigger for slower decay, exponential rootURL = "https://api-drive.mypikpak.com" - minChunkSize = fs.SizeSuffix(s3manager.MinUploadPartSize) - defaultUploadConcurrency = s3manager.DefaultUploadConcurrency + minChunkSize = fs.SizeSuffix(manager.MinUploadPartSize) + defaultUploadConcurrency = manager.DefaultUploadConcurrency ) // Globals @@ -1190,32 +1191,33 @@ func (f *Fs) uploadByForm(ctx context.Context, in io.Reader, name string, size i func (f *Fs) uploadByResumable(ctx context.Context, in io.Reader, name string, size int64, resumable *api.Resumable) (err error) { p := resumable.Params - endpoint := strings.Join(strings.Split(p.Endpoint, ".")[1:], ".") // "mypikpak.com" - cfg := &aws.Config{ - Credentials: credentials.NewStaticCredentials(p.AccessKeyID, p.AccessKeySecret, p.SecurityToken), - Region: aws.String("pikpak"), - Endpoint: &endpoint, - } - sess, err := session.NewSession(cfg) + // Create a credentials provider + creds := credentials.NewStaticCredentialsProvider(p.AccessKeyID, p.AccessKeySecret, p.SecurityToken) + + cfg, err := awsconfig.LoadDefaultConfig(ctx, + awsconfig.WithCredentialsProvider(creds), + awsconfig.WithRegion("pikpak")) if err != nil { return } - partSize := chunksize.Calculator(name, size, s3manager.MaxUploadParts, f.opt.ChunkSize) - // Create an uploader with the session and custom options - uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) { + client := s3.NewFromConfig(cfg, func(o *s3.Options) { + o.BaseEndpoint = aws.String("https://mypikpak.com/") + }) + partSize := chunksize.Calculator(name, size, int(manager.MaxUploadParts), f.opt.ChunkSize) + + // Create an uploader with custom options + uploader := manager.NewUploader(client, func(u *manager.Uploader) { u.PartSize = int64(partSize) u.Concurrency = f.opt.UploadConcurrency }) - // Upload input parameters - uParams := &s3manager.UploadInput{ + // Perform an upload + _, err = uploader.Upload(ctx, &s3.PutObjectInput{ Bucket: &p.Bucket, Key: &p.Key, Body: in, - } - // Perform an upload - _, err = uploader.UploadWithContext(ctx, uParams) + }) return } diff --git a/go.mod b/go.mod index 980d21f9a..a696f91be 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,6 @@ require ( github.com/anacrolix/dms v1.7.1 github.com/anacrolix/log v0.15.2 github.com/atotto/clipboard v0.1.4 - github.com/aws/aws-sdk-go v1.54.19 github.com/aws/aws-sdk-go-v2 v1.30.3 github.com/aws/aws-sdk-go-v2/config v1.27.27 github.com/aws/aws-sdk-go-v2/credentials v1.17.27 @@ -105,6 +104,7 @@ require ( github.com/akavel/rsrc v0.10.2 // indirect github.com/anacrolix/generics v0.0.1 // indirect github.com/andybalholm/cascadia v1.3.2 // indirect + github.com/aws/aws-sdk-go v1.54.19 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect @@ -158,7 +158,6 @@ require ( github.com/jcmturner/gofork v1.7.6 // indirect github.com/jcmturner/goidentity/v6 v6.0.1 // indirect github.com/jcmturner/rpc/v2 v2.0.3 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jtolio/noiseconn v0.0.0-20231127013910-f6d9ecbf1de7 // indirect github.com/klauspost/cpuid/v2 v2.2.8 // indirect github.com/kr/fs v0.1.0 // indirect diff --git a/go.sum b/go.sum index 59b3b310c..68ca9c23b 100644 --- a/go.sum +++ b/go.sum @@ -375,8 +375,6 @@ github.com/jlaffaye/ftp v0.2.0 h1:lXNvW7cBu7R/68bknOX3MrRIIqZ61zELs1P2RAiA3lg= github.com/jlaffaye/ftp v0.2.0/go.mod h1:is2Ds5qkhceAPy2xD6RLI6hmp/qysSoymZ+Z2uTnspI= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/josephspurrier/goversioninfo v1.4.0 h1:Puhl12NSHUSALHSuzYwPYQkqa2E1+7SrtAPJorKK0C8= github.com/josephspurrier/goversioninfo v1.4.0/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -988,7 +986,6 @@ gopkg.in/validator.v2 v2.0.1 h1:xF0KWyGWXm/LM2G1TrEjqOu4pa6coO9AlWSf3msVfDY= gopkg.in/validator.v2 v2.0.1/go.mod h1:lIUZBlB3Im4s/eYp39Ry/wkR02yOPhZ9IwIRBjuPuG8= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=