From 53d9f7f95613d8a06c1a61f8985ab37fc1862a16 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Thu, 20 Aug 2026 14:51:59 +0100 Subject: [PATCH] build: modernize with "go fix -newexpr": use go1.26 new(expr) Also inline and remove the now unneeded pointer helper functions. --- backend/azureblob/arrowlist/arrowlist_test.go | 21 +++++---- backend/azureblob/azureblob.go | 30 +++++-------- backend/azurefiles/azurefiles.go | 17 +++---- backend/cloudinary/cloudinary.go | 4 +- backend/filescom/filescom.go | 15 +++---- backend/huaweidrive/api/types.go | 5 --- backend/huaweidrive/huaweidrive.go | 2 +- backend/iclouddrive/api/session.go | 8 ++-- backend/oracleobjectstorage/byok.go | 29 ++++++------ backend/oracleobjectstorage/command.go | 24 +++++----- backend/oracleobjectstorage/copy.go | 15 +++---- backend/oracleobjectstorage/multipart.go | 28 ++++++------ backend/oracleobjectstorage/object.go | 44 +++++++++---------- .../oracleobjectstorage.go | 32 +++++++------- 14 files changed, 124 insertions(+), 150 deletions(-) diff --git a/backend/azureblob/arrowlist/arrowlist_test.go b/backend/azureblob/arrowlist/arrowlist_test.go index c84f3c8d3..f121aac6b 100644 --- a/backend/azureblob/arrowlist/arrowlist_test.go +++ b/backend/azureblob/arrowlist/arrowlist_test.go @@ -10,7 +10,6 @@ import ( "strings" "testing" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container" "github.com/apache/arrow-go/v18/arrow" @@ -54,12 +53,12 @@ func TestPagerArrow(t *testing.T) { opts := &ListBlobsHierarchyOptions{ ListBlobsHierarchyOptions: container.ListBlobsHierarchyOptions{ Include: container.ListBlobsInclude{Metadata: true, Tags: true}, - Prefix: to.Ptr("dir/"), - MaxResults: to.Ptr(int32(1000)), - StartFrom: to.Ptr("testcontainer/dir/a"), + Prefix: new("dir/"), + MaxResults: new(int32(1000)), + StartFrom: new("testcontainer/dir/a"), }, - EndBefore: to.Ptr("testcontainer/dir/n"), - UseArrowFormat: to.Ptr(true), + EndBefore: new("testcontainer/dir/n"), + UseArrowFormat: new(true), } pager := client.NewListBlobsHierarchyPager("/", opts) @@ -125,7 +124,7 @@ func TestPagerXMLFallback(t *testing.T) { require.NoError(t, err) pager := client.NewListBlobsHierarchyPager("/", &ListBlobsHierarchyOptions{ - UseArrowFormat: to.Ptr(true), + UseArrowFormat: new(true), }) page, err := pager.NextPage(context.Background()) require.NoError(t, err) @@ -149,8 +148,8 @@ func TestPagerXMLFallbackWithEndBefore(t *testing.T) { require.NoError(t, err) pager := client.NewListBlobsHierarchyPager("/", &ListBlobsHierarchyOptions{ - EndBefore: to.Ptr("testcontainer/n"), - UseArrowFormat: to.Ptr(true), + EndBefore: new("testcontainer/n"), + UseArrowFormat: new(true), }) _, err = pager.NextPage(context.Background()) require.ErrorIs(t, err, ErrEndBeforeXMLFallback) @@ -172,7 +171,7 @@ func TestPagerSharedKeyAuth(t *testing.T) { require.NoError(t, err) pager := client.NewListBlobsHierarchyPager("/", &ListBlobsHierarchyOptions{ - UseArrowFormat: to.Ptr(true), + UseArrowFormat: new(true), }) _, err = pager.NextPage(context.Background()) require.NoError(t, err) @@ -191,7 +190,7 @@ func TestPagerResponseError(t *testing.T) { require.NoError(t, err) pager := client.NewListBlobsHierarchyPager("/", &ListBlobsHierarchyOptions{ - UseArrowFormat: to.Ptr(true), + UseArrowFormat: new(true), }) _, err = pager.NextPage(context.Background()) require.Error(t, err) diff --git a/backend/azureblob/azureblob.go b/backend/azureblob/azureblob.go index a1c945110..32b834754 100644 --- a/backend/azureblob/azureblob.go +++ b/backend/azureblob/azureblob.go @@ -28,7 +28,6 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob" @@ -905,15 +904,15 @@ func mapMetadataToAzure(meta map[string]string, logf func(string, ...any)) (head lowerKey := strings.ToLower(k) switch lowerKey { case "cache-control": - headers.BlobCacheControl = pString(v) + headers.BlobCacheControl = new(v) case "content-disposition": - headers.BlobContentDisposition = pString(v) + headers.BlobContentDisposition = new(v) case "content-encoding": - headers.BlobContentEncoding = pString(v) + headers.BlobContentEncoding = new(v) case "content-language": - headers.BlobContentLanguage = pString(v) + headers.BlobContentLanguage = new(v) case "content-type": - headers.BlobContentType = pString(v) + headers.BlobContentType = new(v) case "x-ms-tags": parsed, perr := parseXMsTags(v) if perr != nil { @@ -1207,7 +1206,7 @@ func (f *Fs) list(ctx context.Context, containerName, directory, prefix string, // maxResults==1 probe (isEmpty) which doesn't benefit. useArrow := f.opt.UseArrowList && maxResults != 1 if useArrow { - opts.UseArrowFormat = to.Ptr(true) + opts.UseArrowFormat = new(true) } var foundItems int @@ -2636,11 +2635,6 @@ func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (in io.Read return downloadResponse.Body, nil } -// Converts a string into a pointer to a string -func pString(s string) *string { - return &s -} - // readSeekCloser joins an io.Reader and an io.Seeker and provides a no-op io.Closer type readSeekCloser struct { io.Reader @@ -3167,7 +3161,7 @@ func (o *Object) prepareUpload(ctx context.Context, src fs.ObjectInfo, options [ // Start with default content-type based on source ui.httpHeaders = blob.HTTPHeaders{ - BlobContentType: pString(fs.MimeType(ctx, src)), + BlobContentType: new(fs.MimeType(ctx, src)), } // Apply mapped metadata/headers/tags if requested @@ -3213,15 +3207,15 @@ func (o *Object) prepareUpload(ctx context.Context, src fs.ObjectInfo, options [ o.tags[parts[0]] = parts[1] } case "cache-control": - ui.httpHeaders.BlobCacheControl = pString(value) + ui.httpHeaders.BlobCacheControl = new(value) case "content-disposition": - ui.httpHeaders.BlobContentDisposition = pString(value) + ui.httpHeaders.BlobContentDisposition = new(value) case "content-encoding": - ui.httpHeaders.BlobContentEncoding = pString(value) + ui.httpHeaders.BlobContentEncoding = new(value) case "content-language": - ui.httpHeaders.BlobContentLanguage = pString(value) + ui.httpHeaders.BlobContentLanguage = new(value) case "content-type": - ui.httpHeaders.BlobContentType = pString(value) + ui.httpHeaders.BlobContentType = new(value) } } diff --git a/backend/azurefiles/azurefiles.go b/backend/azurefiles/azurefiles.go index ce7d89f4c..ee750df98 100644 --- a/backend/azurefiles/azurefiles.go +++ b/backend/azurefiles/azurefiles.go @@ -650,11 +650,6 @@ func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (io.ReadClo return resp.Body, nil } -// Returns a pointer to t - useful for returning pointers to constants -func ptr[T any](t T) *T { - return &t -} - var warnStreamUpload sync.Once // Update the object with the contents of the io.Reader, modTime, size and MD5 hash @@ -818,8 +813,8 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object, return nil, fmt.Errorf("Move: mkParentDir failed: %w", err) } opt := file.RenameOptions{ - IgnoreReadOnly: ptr(true), - ReplaceIfExists: ptr(true), + IgnoreReadOnly: new(true), + ReplaceIfExists: new(true), } dstAbsPath := f.absPath(remote) fc := srcObj.fileClient() @@ -864,8 +859,8 @@ func (f *Fs) DirMove(ctx context.Context, src fs.Fs, srcRemote, dstRemote string } opt := directory.RenameOptions{ - IgnoreReadOnly: ptr(false), - ReplaceIfExists: ptr(false), + IgnoreReadOnly: new(false), + ReplaceIfExists: new(false), } dstAbsPath := dstFs.absPath(dstRemote) dirClient := srcFs.dirClient(srcRemote) @@ -904,8 +899,8 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object, ChangeTime: file.SourceCopyFileChangeTime{}, CreationTime: file.SourceCopyFileCreationTime{}, LastWriteTime: file.SourceCopyFileLastWriteTime{}, - PermissionCopyMode: ptr(file.PermissionCopyModeTypeSource), - IgnoreReadOnly: ptr(true), + PermissionCopyMode: new(file.PermissionCopyModeTypeSource), + IgnoreReadOnly: new(true), }, } srcURL := srcObj.fileClient().URL() diff --git a/backend/cloudinary/cloudinary.go b/backend/cloudinary/cloudinary.go index 8e9f17e7c..2abd3da2d 100644 --- a/backend/cloudinary/cloudinary.go +++ b/backend/cloudinary/cloudinary.go @@ -472,8 +472,8 @@ func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options . if updateOptions, ok := option.(*api.UpdateOptions); ok { if updateOptions.PublicID != "" { updateObject = true - params.Overwrite = SDKApi.Bool(true) - params.Invalidate = SDKApi.Bool(true) + params.Overwrite = new(true) + params.Invalidate = new(true) params.PublicID = updateOptions.PublicID params.ResourceType = updateOptions.ResourceType params.Type = SDKApi.DeliveryType(updateOptions.DeliveryType) diff --git a/backend/filescom/filescom.go b/backend/filescom/filescom.go index 62d0f432d..6e53016d0 100644 --- a/backend/filescom/filescom.go +++ b/backend/filescom/filescom.go @@ -345,7 +345,7 @@ func (f *Fs) List(ctx context.Context, dir string) (entries fs.DirEntries, err e } for it.Next() { - item := ptr(it.File()) + item := new(it.File()) remote := f.opt.Enc.ToStandardPath(item.DisplayName) remote = path.Join(dir, remote) if remote == dir { @@ -416,7 +416,7 @@ func (f *Fs) mkdir(ctx context.Context, path string) error { params := files_sdk.FolderCreateParams{ Path: path, - MkdirParents: ptr(true), + MkdirParents: new(true), } err := f.pacer.Call(func() (bool, error) { @@ -458,7 +458,7 @@ func (f *Fs) purgeCheck(ctx context.Context, dir string, check bool) error { params := files_sdk.FileDeleteParams{ Path: path, - Recursive: ptr(!check), + Recursive: new(!check), } err := f.pacer.Call(func() (bool, error) { @@ -529,7 +529,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (dstObj fs. params := files_sdk.FileCopyParams{ Path: srcPath, Destination: dstPath, - Overwrite: ptr(true), + Overwrite: new(true), } var action files_sdk.FileAction @@ -672,7 +672,7 @@ func (f *Fs) PublicLink(ctx context.Context, remote string, expire fs.Duration, Paths: []string{f.absPath(remote)}, } if expire < fs.DurationOff { - params.ExpiresAt = ptr(time.Now().Add(time.Duration(expire))) + params.ExpiresAt = new(time.Now().Add(time.Duration(expire))) } var bundle files_sdk.Bundle @@ -834,11 +834,6 @@ func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (in io.Read return } -// Returns a pointer to t - useful for returning pointers to constants -func ptr[T any](t T) *T { - return &t -} - func isFolderNotEmpty(err error) bool { var re files_sdk.ResponseError ok := errors.As(err, &re) diff --git a/backend/huaweidrive/api/types.go b/backend/huaweidrive/api/types.go index 3d5f6349c..ddbe72331 100644 --- a/backend/huaweidrive/api/types.go +++ b/backend/huaweidrive/api/types.go @@ -224,11 +224,6 @@ var GlobalDomains = map[string]bool{ "drive.cloud.hicloud.com": true, } -// BoolPtr returns a pointer to a bool value (helper for UpdateFileRequest) -func BoolPtr(b bool) *bool { - return &b -} - // StartCursor represents response to Changes.getStartCursor endpoint type StartCursor struct { Category string `json:"category"` // "drive#startCursor" diff --git a/backend/huaweidrive/huaweidrive.go b/backend/huaweidrive/huaweidrive.go index 0e0f3a29c..5529f23bc 100644 --- a/backend/huaweidrive/huaweidrive.go +++ b/backend/huaweidrive/huaweidrive.go @@ -2092,7 +2092,7 @@ func (o *Object) SetMetadata(ctx context.Context, metadata fs.Metadata) error { updateReq.Description = value case "favorite": if favorite, err := strconv.ParseBool(value); err == nil { - updateReq.Favorite = api.BoolPtr(favorite) + updateReq.Favorite = new(favorite) } case "content-type": // Allow setting/overriding MIME type diff --git a/backend/iclouddrive/api/session.go b/backend/iclouddrive/api/session.go index 3fd964cc1..c1df5076d 100644 --- a/backend/iclouddrive/api/session.go +++ b/backend/iclouddrive/api/session.go @@ -718,7 +718,7 @@ func (s *Session) GetAuthState(ctx context.Context) (*AuthStateResponse, error) Path: "", ExtraHeaders: s.GetAuthHeaders(map[string]string{}), RootURL: authEndpoint, - ContentLength: int64Ptr(0), + ContentLength: new(int64(0)), } // Use srv.Call directly to capture the raw response body for debugging resp, err := s.srv.Call(ctx, &opts) @@ -828,7 +828,7 @@ func (s *Session) TrustSession(ctx context.Context) error { ExtraHeaders: s.GetAuthHeaders(map[string]string{}), RootURL: authEndpoint, NoResponse: true, - ContentLength: int64Ptr(0), + ContentLength: new(int64(0)), } _, err := s.Request(ctx, opts, nil, nil) @@ -846,7 +846,7 @@ func (s *Session) ValidateSession(ctx context.Context) error { Path: "/validate", ExtraHeaders: s.GetHeaders(map[string]string{}), RootURL: setupEndpoint, - ContentLength: int64Ptr(0), + ContentLength: new(int64(0)), } _, err := s.Request(ctx, opts, nil, &s.AccountInfo) if err != nil { @@ -904,8 +904,6 @@ func GetCommonHeaders(overwrite map[string]string) map[string]string { return headers } -func int64Ptr(v int64) *int64 { return &v } - // NewSession creates a new Session instance with default values func NewSession() *Session { session := &Session{ diff --git a/backend/oracleobjectstorage/byok.go b/backend/oracleobjectstorage/byok.go index b3392515b..70ed5726d 100644 --- a/backend/oracleobjectstorage/byok.go +++ b/backend/oracleobjectstorage/byok.go @@ -10,7 +10,6 @@ import ( "os" "strings" - "github.com/oracle/oci-go-sdk/v65/common" "github.com/oracle/oci-go-sdk/v65/objectstorage" ) @@ -73,54 +72,54 @@ func populateSSECustomerKeys(opt *Options) error { // https://docs.oracle.com/en-us/iaas/Content/Object/Tasks/usingyourencryptionkeys.htm func useBYOKPutObject(fs *Fs, request *objectstorage.PutObjectRequest) { if fs.opt.SSEKMSKeyID != "" { - request.OpcSseKmsKeyId = common.String(fs.opt.SSEKMSKeyID) + request.OpcSseKmsKeyId = new(fs.opt.SSEKMSKeyID) } if fs.opt.SSECustomerAlgorithm != "" { - request.OpcSseCustomerAlgorithm = common.String(fs.opt.SSECustomerAlgorithm) + request.OpcSseCustomerAlgorithm = new(fs.opt.SSECustomerAlgorithm) } if fs.opt.SSECustomerKey != "" { - request.OpcSseCustomerKey = common.String(fs.opt.SSECustomerKey) + request.OpcSseCustomerKey = new(fs.opt.SSECustomerKey) } if fs.opt.SSECustomerKeySha256 != "" { - request.OpcSseCustomerKeySha256 = common.String(fs.opt.SSECustomerKeySha256) + request.OpcSseCustomerKeySha256 = new(fs.opt.SSECustomerKeySha256) } } func useBYOKHeadObject(fs *Fs, request *objectstorage.HeadObjectRequest) { if fs.opt.SSECustomerAlgorithm != "" { - request.OpcSseCustomerAlgorithm = common.String(fs.opt.SSECustomerAlgorithm) + request.OpcSseCustomerAlgorithm = new(fs.opt.SSECustomerAlgorithm) } if fs.opt.SSECustomerKey != "" { - request.OpcSseCustomerKey = common.String(fs.opt.SSECustomerKey) + request.OpcSseCustomerKey = new(fs.opt.SSECustomerKey) } if fs.opt.SSECustomerKeySha256 != "" { - request.OpcSseCustomerKeySha256 = common.String(fs.opt.SSECustomerKeySha256) + request.OpcSseCustomerKeySha256 = new(fs.opt.SSECustomerKeySha256) } } func useBYOKGetObject(fs *Fs, request *objectstorage.GetObjectRequest) { if fs.opt.SSECustomerAlgorithm != "" { - request.OpcSseCustomerAlgorithm = common.String(fs.opt.SSECustomerAlgorithm) + request.OpcSseCustomerAlgorithm = new(fs.opt.SSECustomerAlgorithm) } if fs.opt.SSECustomerKey != "" { - request.OpcSseCustomerKey = common.String(fs.opt.SSECustomerKey) + request.OpcSseCustomerKey = new(fs.opt.SSECustomerKey) } if fs.opt.SSECustomerKeySha256 != "" { - request.OpcSseCustomerKeySha256 = common.String(fs.opt.SSECustomerKeySha256) + request.OpcSseCustomerKeySha256 = new(fs.opt.SSECustomerKeySha256) } } func useBYOKCopyObject(fs *Fs, request *objectstorage.CopyObjectRequest) { if fs.opt.SSEKMSKeyID != "" { - request.OpcSseKmsKeyId = common.String(fs.opt.SSEKMSKeyID) + request.OpcSseKmsKeyId = new(fs.opt.SSEKMSKeyID) } if fs.opt.SSECustomerAlgorithm != "" { - request.OpcSseCustomerAlgorithm = common.String(fs.opt.SSECustomerAlgorithm) + request.OpcSseCustomerAlgorithm = new(fs.opt.SSECustomerAlgorithm) } if fs.opt.SSECustomerKey != "" { - request.OpcSseCustomerKey = common.String(fs.opt.SSECustomerKey) + request.OpcSseCustomerKey = new(fs.opt.SSECustomerKey) } if fs.opt.SSECustomerKeySha256 != "" { - request.OpcSseCustomerKeySha256 = common.String(fs.opt.SSECustomerKeySha256) + request.OpcSseCustomerKeySha256 = new(fs.opt.SSECustomerKeySha256) } } diff --git a/backend/oracleobjectstorage/command.go b/backend/oracleobjectstorage/command.go index 9c1cf8739..d6553bf88 100644 --- a/backend/oracleobjectstorage/command.go +++ b/backend/oracleobjectstorage/command.go @@ -198,12 +198,12 @@ func (f *Fs) rename(ctx context.Context, remote, newName string) (any, error) { return nil, fs.ErrorNotAFile } details := objectstorage.RenameObjectDetails{ - SourceName: common.String(objectPath), - NewName: common.String(newName), + SourceName: new(objectPath), + NewName: new(newName), } request := objectstorage.RenameObjectRequest{ - NamespaceName: common.String(f.opt.Namespace), - BucketName: common.String(bucketName), + NamespaceName: new(f.opt.Namespace), + BucketName: new(bucketName), RenameObjectDetails: details, OpcClientRequestId: nil, RequestMetadata: common.RequestMetadata{}, @@ -284,8 +284,8 @@ func (f *Fs) listMultipartUploadsObject(ctx context.Context, bucketName, directo uploads = []*objectstorage.MultipartUpload{} req := objectstorage.ListMultipartUploadsRequest{ - NamespaceName: common.String(f.opt.Namespace), - BucketName: common.String(bucketName), + NamespaceName: new(f.opt.Namespace), + BucketName: new(bucketName), } var response objectstorage.ListMultipartUploadsResponse @@ -322,11 +322,11 @@ func (f *Fs) listMultipartUploadParts(ctx context.Context, bucketName, bucketPat uploadedParts map[int]objectstorage.MultipartUploadPartSummary, err error) { uploadedParts = make(map[int]objectstorage.MultipartUploadPartSummary) req := objectstorage.ListMultipartUploadPartsRequest{ - NamespaceName: common.String(f.opt.Namespace), - BucketName: common.String(bucketName), - ObjectName: common.String(bucketPath), - UploadId: common.String(uploadID), - Limit: common.Int(1000), + NamespaceName: new(f.opt.Namespace), + BucketName: new(bucketName), + ObjectName: new(bucketPath), + UploadId: new(uploadID), + Limit: new(1000), } var response objectstorage.ListMultipartUploadPartsResponse @@ -351,7 +351,7 @@ func (f *Fs) listMultipartUploadParts(ctx context.Context, bucketName, bucketPat func (f *Fs) restore(ctx context.Context, opt map[string]string) (any, error) { req := objectstorage.RestoreObjectsRequest{ - NamespaceName: common.String(f.opt.Namespace), + NamespaceName: new(f.opt.Namespace), RestoreObjectsDetails: objectstorage.RestoreObjectsDetails{}, } if hours := opt["hours"]; hours != "" { diff --git a/backend/oracleobjectstorage/copy.go b/backend/oracleobjectstorage/copy.go index 76b5d939c..915f8514d 100644 --- a/backend/oracleobjectstorage/copy.go +++ b/backend/oracleobjectstorage/copy.go @@ -8,7 +8,6 @@ import ( "strings" "time" - "github.com/oracle/oci-go-sdk/v65/common" "github.com/oracle/oci-go-sdk/v65/objectstorage" "github.com/rclone/rclone/fs" ) @@ -61,16 +60,16 @@ func (f *Fs) copy(ctx context.Context, dstObj *Object, srcObj *Object) (err erro } } copyObjectDetails := objectstorage.CopyObjectDetails{ - SourceObjectName: common.String(srcPath), - DestinationRegion: common.String(dstObj.fs.opt.Region), - DestinationNamespace: common.String(dstObj.fs.opt.Namespace), - DestinationBucket: common.String(dstBucket), - DestinationObjectName: common.String(dstPath), + SourceObjectName: new(srcPath), + DestinationRegion: new(dstObj.fs.opt.Region), + DestinationNamespace: new(dstObj.fs.opt.Namespace), + DestinationBucket: new(dstBucket), + DestinationObjectName: new(dstPath), DestinationObjectMetadata: metadataWithOpcPrefix(srcObj.meta), } req := objectstorage.CopyObjectRequest{ - NamespaceName: common.String(srcObj.fs.opt.Namespace), - BucketName: common.String(srcBucket), + NamespaceName: new(srcObj.fs.opt.Namespace), + BucketName: new(srcBucket), CopyObjectDetails: copyObjectDetails, } useBYOKCopyObject(f, &req) diff --git a/backend/oracleobjectstorage/multipart.go b/backend/oracleobjectstorage/multipart.go index d3f471b91..a1d253ae2 100644 --- a/backend/oracleobjectstorage/multipart.go +++ b/backend/oracleobjectstorage/multipart.go @@ -161,13 +161,13 @@ func (w *objectChunkWriter) WriteChunk(ctx context.Context, chunkNumber int, rea } } req := objectstorage.UploadPartRequest{ - NamespaceName: common.String(w.f.opt.Namespace), + NamespaceName: new(w.f.opt.Namespace), BucketName: w.bucket, ObjectName: w.key, UploadId: w.uploadID, - UploadPartNum: common.Int(ossPartNumber), - ContentLength: common.Int64(currentChunkSize), - ContentMD5: common.String(md5sum), + UploadPartNum: new(ossPartNumber), + ContentLength: new(currentChunkSize), + ContentMD5: new(md5sum), } w.o.applyPartUploadOptions(w.ui.req, &req) var resp objectstorage.UploadPartResponse @@ -213,7 +213,7 @@ func (w *objectChunkWriter) addCompletedPart(partNum *int, eTag *string) { func (w *objectChunkWriter) Close(ctx context.Context) (err error) { req := objectstorage.CommitMultipartUploadRequest{ - NamespaceName: common.String(w.f.opt.Namespace), + NamespaceName: new(w.f.opt.Namespace), BucketName: w.bucket, ObjectName: w.key, UploadId: w.uploadID, @@ -290,9 +290,9 @@ func (o *Object) prepareUpload(ctx context.Context, src fs.ObjectInfo, options [ bucket, bucketPath := o.split() ui.req = &objectstorage.PutObjectRequest{ - NamespaceName: common.String(o.fs.opt.Namespace), - BucketName: common.String(bucket), - ObjectName: common.String(bucketPath), + NamespaceName: new(o.fs.opt.Namespace), + BucketName: new(bucket), + ObjectName: new(bucketPath), } // Set the mtime in the metadata @@ -305,7 +305,7 @@ func (o *Object) prepareUpload(ctx context.Context, src fs.ObjectInfo, options [ ui.req.OpcMeta = make(map[string]string, len(meta)+2) // merge metadata into request and user metadata for k, v := range meta { - pv := common.String(v) + pv := new(v) k = strings.ToLower(k) switch k { case "cache-control": @@ -366,10 +366,10 @@ func (o *Object) prepareUpload(ctx context.Context, src fs.ObjectInfo, options [ } // Set the content type if it isn't set already if ui.req.ContentType == nil { - ui.req.ContentType = common.String(fs.MimeType(ctx, src)) + ui.req.ContentType = new(fs.MimeType(ctx, src)) } if size >= 0 { - ui.req.ContentLength = common.Int64(size) + ui.req.ContentLength = new(size) } if md5sumBase64 != "" { ui.req.ContentMD5 = &md5sumBase64 @@ -420,10 +420,10 @@ func (o *Object) createMultipartUpload(ctx context.Context, putReq *objectstorag } } req := objectstorage.CreateMultipartUploadRequest{ - NamespaceName: common.String(o.fs.opt.Namespace), - BucketName: common.String(bucketName), + NamespaceName: new(o.fs.opt.Namespace), + BucketName: new(bucketName), } - req.Object = common.String(bucketPath) + req.Object = new(bucketPath) if o.fs.opt.StorageTier != "" { storageTier, ok := objectstorage.GetMappingStorageTierEnum(o.fs.opt.StorageTier) if !ok { diff --git a/backend/oracleobjectstorage/object.go b/backend/oracleobjectstorage/object.go index b9c6d1b27..b26509b78 100644 --- a/backend/oracleobjectstorage/object.go +++ b/backend/oracleobjectstorage/object.go @@ -83,9 +83,9 @@ func (o *Object) readMetaData(ctx context.Context) (err error) { func (o *Object) headObject(ctx context.Context) (info *objectstorage.HeadObjectResponse, err error) { bucketName, objectPath := o.split() req := objectstorage.HeadObjectRequest{ - NamespaceName: common.String(o.fs.opt.Namespace), - BucketName: common.String(bucketName), - ObjectName: common.String(objectPath), + NamespaceName: new(o.fs.opt.Namespace), + BucketName: new(bucketName), + ObjectName: new(objectPath), } useBYOKHeadObject(o.fs, &req) var response objectstorage.HeadObjectResponse @@ -235,10 +235,10 @@ func (o *Object) SetTier(tier string) (err error) { } req := objectstorage.UpdateObjectStorageTierRequest{ - NamespaceName: common.String(o.fs.opt.Namespace), - BucketName: common.String(bucketName), + NamespaceName: new(o.fs.opt.Namespace), + BucketName: new(bucketName), UpdateObjectStorageTierDetails: objectstorage.UpdateObjectStorageTierDetails{ - ObjectName: common.String(bucketPath), + ObjectName: new(bucketPath), StorageTier: tierEnum, }, } @@ -321,9 +321,9 @@ func (o *Object) Storable() bool { func (o *Object) Remove(ctx context.Context) error { bucketName, bucketPath := o.split() req := objectstorage.DeleteObjectRequest{ - NamespaceName: common.String(o.fs.opt.Namespace), - BucketName: common.String(bucketName), - ObjectName: common.String(bucketPath), + NamespaceName: new(o.fs.opt.Namespace), + BucketName: new(bucketName), + ObjectName: new(bucketPath), } err := o.fs.pacer.Call(func() (bool, error) { resp, err := o.fs.srv.DeleteObject(ctx, req) @@ -336,9 +336,9 @@ func (o *Object) Remove(ctx context.Context) error { func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (io.ReadCloser, error) { bucketName, bucketPath := o.split() req := objectstorage.GetObjectRequest{ - NamespaceName: common.String(o.fs.opt.Namespace), - BucketName: common.String(bucketName), - ObjectName: common.String(bucketPath), + NamespaceName: new(o.fs.opt.Namespace), + BucketName: new(bucketName), + ObjectName: new(bucketPath), } o.applyGetObjectOptions(&req, options...) useBYOKGetObject(o.fs, &req) @@ -456,15 +456,15 @@ func (o *Object) applyPutOptions(req *objectstorage.PutObjectRequest, options .. case "": // ignore case "cache-control": - req.CacheControl = common.String(value) + req.CacheControl = new(value) case "content-disposition": - req.ContentDisposition = common.String(value) + req.ContentDisposition = new(value) case "content-encoding": - req.ContentEncoding = common.String(value) + req.ContentEncoding = new(value) case "content-language": - req.ContentLanguage = common.String(value) + req.ContentLanguage = new(value) case "content-type": - req.ContentType = common.String(value) + req.ContentType = new(value) default: if strings.HasPrefix(lowerKey, ociMetaPrefix) { req.OpcMeta[lowerKey] = value @@ -496,15 +496,15 @@ func (o *Object) applyGetObjectOptions(req *objectstorage.GetObjectRequest, opti case "": // ignore case "cache-control": - req.HttpResponseCacheControl = common.String(value) + req.HttpResponseCacheControl = new(value) case "content-disposition": - req.HttpResponseContentDisposition = common.String(value) + req.HttpResponseContentDisposition = new(value) case "content-encoding": - req.HttpResponseContentEncoding = common.String(value) + req.HttpResponseContentEncoding = new(value) case "content-language": - req.HttpResponseContentLanguage = common.String(value) + req.HttpResponseContentLanguage = new(value) case "content-type": - req.HttpResponseContentType = common.String(value) + req.HttpResponseContentType = new(value) case "range": // do nothing default: diff --git a/backend/oracleobjectstorage/oracleobjectstorage.go b/backend/oracleobjectstorage/oracleobjectstorage.go index 933662697..23f8de25b 100644 --- a/backend/oracleobjectstorage/oracleobjectstorage.go +++ b/backend/oracleobjectstorage/oracleobjectstorage.go @@ -329,14 +329,14 @@ func (f *Fs) list(ctx context.Context, bucket, directory, prefix string, addBuck chunkSize = limit } var request = objectstorage.ListObjectsRequest{ - NamespaceName: common.String(f.opt.Namespace), - BucketName: common.String(bucket), - Prefix: common.String(directory), - Limit: common.Int(chunkSize), - Fields: common.String("name,size,etag,timeCreated,md5,timeModified,storageTier,archivalState"), + NamespaceName: new(f.opt.Namespace), + BucketName: new(bucket), + Prefix: new(directory), + Limit: new(chunkSize), + Fields: new("name,size,etag,timeCreated,md5,timeModified,storageTier,archivalState"), } if delimiter != "" { - request.Delimiter = common.String(delimiter) + request.Delimiter = new(delimiter) } for { @@ -471,8 +471,8 @@ func (f *Fs) listBuckets(ctx context.Context) (entries fs.DirEntries, err error) return nil, fmt.Errorf("can't list buckets with %v provider, use a valid auth provider in config file", noAuth) } var request = objectstorage.ListBucketsRequest{ - NamespaceName: common.String(f.opt.Namespace), - CompartmentId: common.String(f.opt.Compartment), + NamespaceName: new(f.opt.Namespace), + CompartmentId: new(f.opt.Compartment), } var resp objectstorage.ListBucketsResponse for { @@ -569,12 +569,12 @@ func (f *Fs) makeBucket(ctx context.Context, bucketName string) error { } return f.cache.Create(bucketName, func() error { details := objectstorage.CreateBucketDetails{ - Name: common.String(bucketName), - CompartmentId: common.String(f.opt.Compartment), + Name: new(bucketName), + CompartmentId: new(f.opt.Compartment), PublicAccessType: objectstorage.CreateBucketDetailsPublicAccessTypeNopublicaccess, } req := objectstorage.CreateBucketRequest{ - NamespaceName: common.String(f.opt.Namespace), + NamespaceName: new(f.opt.Namespace), CreateBucketDetails: details, } err := f.pacer.Call(func() (bool, error) { @@ -601,8 +601,8 @@ func (f *Fs) makeBucket(ctx context.Context, bucketName string) error { // NB this can return incorrect results if called immediately after bucket deletion func (f *Fs) bucketExists(ctx context.Context, bucketName string) (bool, error) { req := objectstorage.HeadBucketRequest{ - NamespaceName: common.String(f.opt.Namespace), - BucketName: common.String(bucketName), + NamespaceName: new(f.opt.Namespace), + BucketName: new(bucketName), } err := f.pacer.Call(func() (bool, error) { resp, err := f.srv.HeadBucket(ctx, req) @@ -627,8 +627,8 @@ func (f *Fs) Rmdir(ctx context.Context, dir string) error { } return f.cache.Remove(bucketName, func() error { req := objectstorage.DeleteBucketRequest{ - NamespaceName: common.String(f.opt.Namespace), - BucketName: common.String(bucketName), + NamespaceName: new(f.opt.Namespace), + BucketName: new(bucketName), } err := f.pacer.Call(func() (bool, error) { resp, err := f.srv.DeleteBucket(ctx, req) @@ -646,7 +646,7 @@ func (f *Fs) abortMultiPartUpload(ctx context.Context, bucketName, bucketPath, u return nil } request := objectstorage.AbortMultipartUploadRequest{ - NamespaceName: common.String(f.opt.Namespace), + NamespaceName: new(f.opt.Namespace), BucketName: bucketName, ObjectName: bucketPath, UploadId: uploadID,