fix (s3): s3 rm bug - #228

This commit is contained in:
Mickael Kerjean
2020-06-23 21:25:16 +10:00

View File

@ -241,9 +241,14 @@ func (s S3Backend) Mkdir(path string) error {
func (s S3Backend) Rm(path string) error { func (s S3Backend) Rm(path string) error {
p := s.path(path) p := s.path(path)
client := s3.New(s.createSession(p.bucket)) client := s3.New(s.createSession(p.bucket))
if p.bucket == "" { if p.bucket == "" {
return ErrNotFound return ErrNotFound
} else if strings.Contains(path, "/") == false {
_, err := client.DeleteObject(&s3.DeleteObjectInput{
Bucket: aws.String(p.bucket),
Key: aws.String(p.path),
})
return err
} }
objs, err := client.ListObjects(&s3.ListObjectsInput{ objs, err := client.ListObjects(&s3.ListObjectsInput{
@ -255,7 +260,6 @@ func (s S3Backend) Rm(path string) error {
return err return err
} }
for _, obj := range objs.Contents { for _, obj := range objs.Contents {
// TODO: bug
_, err := client.DeleteObject(&s3.DeleteObjectInput{ _, err := client.DeleteObject(&s3.DeleteObjectInput{
Bucket: aws.String(p.bucket), Bucket: aws.String(p.bucket),
Key: obj.Key, Key: obj.Key,
@ -265,7 +269,6 @@ func (s S3Backend) Rm(path string) error {
} }
} }
for _, pref := range objs.CommonPrefixes { for _, pref := range objs.CommonPrefixes {
// TODO: bug
s.Rm("/" + p.bucket + "/" + *pref.Prefix) s.Rm("/" + p.bucket + "/" + *pref.Prefix)
_, err := client.DeleteObject(&s3.DeleteObjectInput{ _, err := client.DeleteObject(&s3.DeleteObjectInput{
Bucket: aws.String(p.bucket), Bucket: aws.String(p.bucket),
@ -275,9 +278,6 @@ func (s S3Backend) Rm(path string) error {
return err return err
} }
} }
if err != nil {
return err
}
if p.path == "" { if p.path == "" {
_, err := client.DeleteBucket(&s3.DeleteBucketInput{ _, err := client.DeleteBucket(&s3.DeleteBucketInput{