module Fog module AWS module S3 class Real # Change access control list for an S3 bucket # # ==== Parameters # * bucket_name<~String> - name of bucket to modify # * acl<~Hash>: # * Owner<~Hash>: # * ID<~String>: id of owner # * DisplayName<~String>: display name of owner # * AccessControlList<~Array>: # * Grantee<~Hash>: # * 'DisplayName'<~String> - Display name of grantee # * 'ID'<~String> - Id of grantee # or # * 'EmailAddress'<~String> - Email address of grantee # or # * 'URI'<~String> - URI of group to grant access for # * Permission<~String> - Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP] def put_bucket_acl(bucket_name, acl) data = <<-DATA #{acl['Owner']['ID']} #{acl['Owner']['DisplayName']} DATA acl['AccessControlList'].each do |grant| data << " " type = case grant['Grantee'].keys.sort when ['DisplayName', 'ID'] 'CanonicalUser' when ['EmailAddress'] 'AmazonCustomerByEmail' when ['URI'] 'Group' end data << " " for key, value in grant['Grantee'] data << " <#{key}>#{value}" end data << " " data << " #{grant['Permission']}" data << " " end data << <<-DATA DATA request({ :body => data, :expects => 200, :headers => {}, :host => "#{bucket_name}.#{@host}", :method => 'PUT', :query => 'acl' }) end end class Mock def put_bucket_acl(bucket_name, acl) raise MockNotImplemented.new("Contributions welcome!") end end end end end