Now client requests for ACL changes are honored through PutBucketACL API

This commit is contained in:
Harshavardhana
2015-04-27 03:04:29 -07:00
parent 1b411f9e86
commit 9232ce3b4e
9 changed files with 124 additions and 5 deletions

View File

@@ -153,7 +153,14 @@ func (d donutDriver) CreateBucket(bucketName, acl string) error {
if strings.TrimSpace(acl) == "" {
acl = "private"
}
return d.donut.MakeBucket(bucketName, acl)
if err := d.donut.MakeBucket(bucketName, acl); err != nil {
err = iodine.ToError(err)
if err.Error() == "bucket exists" {
return iodine.New(drivers.BucketExists{Bucket: bucketName}, nil)
}
return err
}
return nil
}
return iodine.New(drivers.BucketNameInvalid{Bucket: bucketName}, nil)
}
@@ -183,6 +190,23 @@ func (d donutDriver) GetBucketMetadata(bucketName string) (drivers.BucketMetadat
return bucketMetadata, nil
}
// SetBucketMetadata sets bucket's metadata
func (d donutDriver) SetBucketMetadata(bucketName, acl string) error {
if !drivers.IsValidBucket(bucketName) || strings.Contains(bucketName, ".") {
return drivers.BucketNameInvalid{Bucket: bucketName}
}
if strings.TrimSpace(acl) == "" {
acl = "private"
}
bucketMetadata := make(map[string]string)
bucketMetadata["acl"] = acl
err := d.donut.SetBucketMetadata(bucketName, bucketMetadata)
if err != nil {
return iodine.New(drivers.BucketNotFound{Bucket: bucketName}, nil)
}
return nil
}
// GetObject retrieves an object and writes it to a writer
func (d donutDriver) GetObject(target io.Writer, bucketName, objectName string) (int64, error) {
if !drivers.IsValidBucket(bucketName) || strings.Contains(bucketName, ".") {