From 4ef30db2097bb76ceeb718db0e921291fb3e12bd Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sat, 16 Sep 2023 16:00:50 +0100 Subject: [PATCH] b2: fix listing all buckets when not needed Before this change the b2 backend listed all the buckets to turn a single bucket name into an ID. However in July 26, 2018 a parameter was added to the list buckets API to make listing all the buckets unecessary. This code sets the bucketName parameter so that only the results for the desired bucket are returned. --- backend/b2/b2.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/backend/b2/b2.go b/backend/b2/b2.go index d11233517..a2cfd4abd 100644 --- a/backend/b2/b2.go +++ b/backend/b2/b2.go @@ -824,7 +824,7 @@ func (f *Fs) listDir(ctx context.Context, bucket, directory, prefix string, addB // listBuckets returns all the buckets to out func (f *Fs) listBuckets(ctx context.Context) (entries fs.DirEntries, err error) { - err = f.listBucketsToFn(ctx, func(bucket *api.Bucket) error { + err = f.listBucketsToFn(ctx, "", func(bucket *api.Bucket) error { d := fs.NewDir(bucket.Name, time.Time{}) entries = append(entries, d) return nil @@ -917,11 +917,14 @@ func (f *Fs) ListR(ctx context.Context, dir string, callback fs.ListRCallback) ( type listBucketFn func(*api.Bucket) error // listBucketsToFn lists the buckets to the function supplied -func (f *Fs) listBucketsToFn(ctx context.Context, fn listBucketFn) error { +func (f *Fs) listBucketsToFn(ctx context.Context, bucketName string, fn listBucketFn) error { var account = api.ListBucketsRequest{ AccountID: f.info.AccountID, BucketID: f.info.Allowed.BucketID, } + if bucketName != "" && account.BucketID == "" { + account.BucketName = f.opt.Enc.FromStandardName(bucketName) + } var response api.ListBucketsResponse opts := rest.Opts{ @@ -967,7 +970,7 @@ func (f *Fs) getbucketType(ctx context.Context, bucket string) (bucketType strin if bucketType != "" { return bucketType, nil } - err = f.listBucketsToFn(ctx, func(bucket *api.Bucket) error { + err = f.listBucketsToFn(ctx, bucket, func(bucket *api.Bucket) error { // listBucketsToFn reads bucket Types return nil }) @@ -1002,7 +1005,7 @@ func (f *Fs) getBucketID(ctx context.Context, bucket string) (bucketID string, e if bucketID != "" { return bucketID, nil } - err = f.listBucketsToFn(ctx, func(bucket *api.Bucket) error { + err = f.listBucketsToFn(ctx, bucket, func(bucket *api.Bucket) error { // listBucketsToFn sets IDs return nil })