From d5cd03c26253a065a0c4111a7ae88897678d4963 Mon Sep 17 00:00:00 2001 From: Wesley Beary Date: Tue, 18 Aug 2009 21:26:13 -0700 Subject: [PATCH] avoid memoizing and push things onto collection (thinner abstraction) --- lib/fog/aws/models/s3/bucket.rb | 18 ++++++--------- lib/fog/aws/models/s3/object.rb | 39 +------------------------------- lib/fog/aws/models/s3/objects.rb | 34 +++++++++++++++++++++++++--- 3 files changed, 39 insertions(+), 52 deletions(-) diff --git a/lib/fog/aws/models/s3/bucket.rb b/lib/fog/aws/models/s3/bucket.rb index 3bdea6ba1..244f17614 100644 --- a/lib/fog/aws/models/s3/bucket.rb +++ b/lib/fog/aws/models/s3/bucket.rb @@ -5,9 +5,9 @@ module Fog class Bucket < Fog::Model attr_accessor :creation_date, - :location, - :name, - :owner + :location, + :name, + :owner def initialize(attributes = {}) remap_attributes(attributes, { @@ -22,10 +22,8 @@ module Fog end def location - @location ||= begin - data = s3.get_bucket_location(name) - data.body['LocationConstraint'] - end + data = s3.get_bucket_location(name) + data.body['LocationConstraint'] end def objects @@ -36,10 +34,8 @@ module Fog end def payer - @payer ||= begin - data = connection.get_request_payment(name) - data.body['Payer'] - end + data = connection.get_request_payment(name) + data.body['Payer'] end def payer=(new_payer) diff --git a/lib/fog/aws/models/s3/object.rb b/lib/fog/aws/models/s3/object.rb index 1e56993bf..8895300fa 100644 --- a/lib/fog/aws/models/s3/object.rb +++ b/lib/fog/aws/models/s3/object.rb @@ -6,6 +6,7 @@ module Fog attr_accessor :body, :content_length, + :content_type, :etag, :key, :last_modified, @@ -26,14 +27,6 @@ module Fog super end - def body - @body ||= get.body - end - - def content_length - @content_length ||= head.content_length - end - def copy(target_bucket_name, target_object_key) data = connection.copy_object(bucket.name, key, target_bucket_name, target_object_key).body copy = self.dup @@ -51,14 +44,6 @@ module Fog connection.delete_object(bucket, key) end - def etag - @etag ||= head.etag - end - - def last_modified - @last_modified ||= head.last_modified - end - def save(options = {}) data = connection.put_object(bucket.name, key, body, options) @etag = data.headers['ETag'] @@ -66,28 +51,6 @@ module Fog private - def get - data = connection.get_object(bucket.name, key, options) - object_data = { :body => data.body} - for key, value in data.headers - if ['Content-Length', 'ETag', 'Last-Modified'].include?(key) - object_data[key] = value - end - end - update_attributes(object_data) - end - - def head - data = connection.head_object(bucket.name, key, options) - object_data = {} - for key, value in data.headers - if ['Content-Length', 'ETag', 'Last-Modified'].include?(key) - object_data[key] = value - end - end - update_attributes(object_data) - end - def bucket=(new_bucket) @bucket = new_bucket end diff --git a/lib/fog/aws/models/s3/objects.rb b/lib/fog/aws/models/s3/objects.rb index 57a46f8fb..39f5df02d 100644 --- a/lib/fog/aws/models/s3/objects.rb +++ b/lib/fog/aws/models/s3/objects.rb @@ -34,9 +34,9 @@ module Fog data['Contents'].each do |object| owner = Fog::AWS::S3::Owner.new(object.delete('Owner').merge!(:connection => connection)) objects << Fog::AWS::S3::Object.new({ - :bucket => bucket, - :connection => connection, - :owner => owner + :bucket => bucket, + :connection => connection, + :owner => owner }.merge!(object)) end objects @@ -48,6 +48,34 @@ module Fog object end + def get + data = connection.get_object(bucket.name, key, options) + object_data = { :body => data.body} + for key, value in data.headers + if ['Content-Length', 'Content-Type', 'ETag', 'Last-Modified'].include?(key) + object_data[key] = value + end + end + Fog::AWS::S3::Object.new({ + :bucket => bucket, + :connection => connection + }.merge!(object_data)) + end + + def head + data = connection.head_object(bucket.name, key, options) + object_data = {} + for key, value in data.headers + if ['Content-Length', 'Content-Type', 'ETag', 'Last-Modified'].include?(key) + object_data[key] = value + end + end + Fog::AWS::S3::Object.new({ + :bucket => bucket, + :connection => connection + }.merge!(object_data)) + end + def new(attributes = {}) Fog::AWS::S3::Object.new({ :bucket => bucket,