diff --git a/lib/fog/aws/models/s3/bucket.rb b/lib/fog/aws/models/s3/bucket.rb index a05c61467..bd1e8d893 100644 --- a/lib/fog/aws/models/s3/bucket.rb +++ b/lib/fog/aws/models/s3/bucket.rb @@ -4,7 +4,36 @@ module Fog class Bucket < Fog::Model - attr_accessor :creation_date, :name, :owner + attr_accessor :creation_date, :location, :name, :owner + + def delete + connection.delete_bucket(name) + true + end + + def location + data = s3.get_bucket_location(name) + @location = data.body['LocationConstraint'] + end + + def payer + data = connection.get_request_payment(name) + data.body['Payer'] + end + + def payer=(new_payer) + connection.put_request_payment(name, new_payer) + new_payer + end + + def save + options = {} + if @location + options['LocationConstraint'] = @location + end + connection.put_bucket(name, options) + true + end end diff --git a/lib/fog/aws/models/s3/buckets.rb b/lib/fog/aws/models/s3/buckets.rb index 35328821a..26c2585f3 100644 --- a/lib/fog/aws/models/s3/buckets.rb +++ b/lib/fog/aws/models/s3/buckets.rb @@ -27,6 +27,12 @@ module Fog buckets end + def create(attributes = {}) + bucket = new(attributes) + bucket.save + bucket + end + def get(name, options = {}) data = connection.get_bucket(name, options).body objects = Fog::AWS::S3::Objects.new({ @@ -54,6 +60,10 @@ module Fog objects end + def new(attributes = {}) + Fog::AWS::S3::Bucket.new(attributes.merge!(:connection => connection)) + end + end end diff --git a/spec/aws/models/s3/buckets_spec.rb b/spec/aws/models/s3/buckets_spec.rb index d3a3fcaa4..4a815ed3c 100644 --- a/spec/aws/models/s3/buckets_spec.rb +++ b/spec/aws/models/s3/buckets_spec.rb @@ -10,4 +10,16 @@ describe 'S3.buckets' do p s3.buckets.get('monki') end + it "should create bucket" do + p @bucket = s3.buckets.create(:name => 'fogbucketstest') + p @bucket.delete + end + + it "should put request payment" do + p @bucket = s3.buckets.create(:name => 'fogbucketspaymenttest') + p @bucket.payer = 'BucketOwner' + p @bucket.payer + p @bucket.delete + end + end \ No newline at end of file