diff --git a/backend/posix/posix.go b/backend/posix/posix.go index c23aca5..1055091 100644 --- a/backend/posix/posix.go +++ b/backend/posix/posix.go @@ -101,7 +101,7 @@ func (p *Posix) ListBuckets() (*s3.ListBucketsOutput, error) { func (p *Posix) HeadBucket(bucket string) (*s3.HeadBucketOutput, error) { _, err := os.Lstat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -125,7 +125,7 @@ func (p *Posix) PutBucket(bucket string) error { func (p *Posix) DeleteBucket(bucket string) error { names, err := os.ReadDir(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -157,7 +157,7 @@ func (p *Posix) CreateMultipartUpload(mpu *s3.CreateMultipartUploadInput) (*s3.C object := *mpu.Key _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -205,7 +205,7 @@ func (p *Posix) CreateMultipartUpload(mpu *s3.CreateMultipartUploadInput) (*s3.C func (p *Posix) CompleteMultipartUpload(bucket, object, uploadID string, parts []types.Part) (*s3.CompleteMultipartUploadOutput, error) { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -322,7 +322,7 @@ func (p *Posix) checkUploadIDExists(bucket, object, uploadID string) ([32]byte, objdir := filepath.Join(bucket, metaTmpMultipartDir, fmt.Sprintf("%x", sum)) _, err := os.Stat(filepath.Join(objdir, uploadID)) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return [32]byte{}, s3err.GetAPIError(s3err.ErrNoSuchUpload) } if err != nil { @@ -470,7 +470,7 @@ func (p *Posix) AbortMultipartUpload(mpu *s3.AbortMultipartUploadInput) error { uploadID := *mpu.UploadId _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -498,7 +498,7 @@ func (p *Posix) ListMultipartUploads(mpu *s3.ListMultipartUploadsInput) (*s3.Lis bucket := *mpu.Bucket _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -588,7 +588,7 @@ func (p *Posix) ListMultipartUploads(mpu *s3.ListMultipartUploadsInput) (*s3.Lis func (p *Posix) ListObjectParts(bucket, object, uploadID string, partNumberMarker int, maxParts int) (*s3.ListPartsOutput, error) { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -603,7 +603,7 @@ func (p *Posix) ListObjectParts(bucket, object, uploadID string, partNumberMarke objdir := filepath.Join(bucket, metaTmpMultipartDir, fmt.Sprintf("%x", sum)) ents, err := os.ReadDir(filepath.Join(objdir, uploadID)) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchUpload) } if err != nil { @@ -673,7 +673,7 @@ func (p *Posix) ListObjectParts(bucket, object, uploadID string, partNumberMarke func (p *Posix) PutObjectPart(bucket, object, uploadID string, part int, length int64, r io.Reader) (string, error) { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return "", s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -711,7 +711,7 @@ func (p *Posix) PutObjectPart(bucket, object, uploadID string, part int, length func (p *Posix) PutObject(po *s3.PutObjectInput) (string, error) { _, err := os.Stat(*po.Bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return "", s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -783,7 +783,7 @@ func (p *Posix) PutObject(po *s3.PutObjectInput) (string, error) { func (p *Posix) DeleteObject(bucket, object string) error { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -791,7 +791,7 @@ func (p *Posix) DeleteObject(bucket, object string) error { } os.Remove(filepath.Join(bucket, object)) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return s3err.GetAPIError(s3err.ErrNoSuchKey) } if err != nil { @@ -845,7 +845,7 @@ func (p *Posix) DeleteObjects(bucket string, objects *s3.DeleteObjectsInput) err func (p *Posix) GetObject(bucket, object, acceptRange string, startOffset, length int64, writer io.Writer) (*s3.GetObjectOutput, error) { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -854,7 +854,7 @@ func (p *Posix) GetObject(bucket, object, acceptRange string, startOffset, lengt objPath := filepath.Join(bucket, object) fi, err := os.Stat(objPath) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchKey) } if err != nil { @@ -867,7 +867,7 @@ func (p *Posix) GetObject(bucket, object, acceptRange string, startOffset, lengt } f, err := os.Open(objPath) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchKey) } if err != nil { @@ -910,7 +910,7 @@ func (p *Posix) GetObject(bucket, object, acceptRange string, startOffset, lengt func (p *Posix) HeadObject(bucket, object string) (*s3.HeadObjectOutput, error) { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -919,7 +919,7 @@ func (p *Posix) HeadObject(bucket, object string) (*s3.HeadObjectOutput, error) objPath := filepath.Join(bucket, object) fi, err := os.Stat(objPath) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchKey) } if err != nil { @@ -947,7 +947,7 @@ func (p *Posix) HeadObject(bucket, object string) (*s3.HeadObjectOutput, error) func (p *Posix) CopyObject(srcBucket, srcObject, DstBucket, dstObject string) (*s3.CopyObjectOutput, error) { _, err := os.Stat(srcBucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -955,7 +955,7 @@ func (p *Posix) CopyObject(srcBucket, srcObject, DstBucket, dstObject string) (* } _, err = os.Stat(DstBucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -964,7 +964,7 @@ func (p *Posix) CopyObject(srcBucket, srcObject, DstBucket, dstObject string) (* objPath := filepath.Join(srcBucket, srcObject) f, err := os.Open(objPath) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchKey) } if err != nil { @@ -992,7 +992,7 @@ func (p *Posix) CopyObject(srcBucket, srcObject, DstBucket, dstObject string) (* func (p *Posix) ListObjects(bucket, prefix, marker, delim string, maxkeys int) (*s3.ListObjectsOutput, error) { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -1020,7 +1020,7 @@ func (p *Posix) ListObjects(bucket, prefix, marker, delim string, maxkeys int) ( func (p *Posix) ListObjectsV2(bucket, prefix, marker, delim string, maxkeys int) (*s3.ListObjectsV2Output, error) { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -1048,7 +1048,7 @@ func (p *Posix) ListObjectsV2(bucket, prefix, marker, delim string, maxkeys int) func (p *Posix) GetTags(bucket, object string) (map[string]string, error) { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -1081,7 +1081,7 @@ func (p *Posix) getXattrTags(bucket, object string) (map[string]string, error) { func (p *Posix) SetTags(bucket, object string, tags map[string]string) error { _, err := os.Stat(bucket) - if err != nil && errors.Is(err, fs.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return s3err.GetAPIError(s3err.ErrNoSuchBucket) } if err != nil { @@ -1089,7 +1089,14 @@ func (p *Posix) SetTags(bucket, object string, tags map[string]string) error { } if tags == nil { - return xattr.Remove(filepath.Join(bucket, object), "user."+tagHdr) + err = xattr.Remove(filepath.Join(bucket, object), "user."+tagHdr) + if errors.Is(err, fs.ErrNotExist) { + return s3err.GetAPIError(s3err.ErrNoSuchKey) + } + if err != nil { + return fmt.Errorf("remove tags: %w", err) + } + return nil } b, err := json.Marshal(tags)