diff --git a/lib/fog/aws/requests/storage/get_object.rb b/lib/fog/aws/requests/storage/get_object.rb index da0469a52..19e6978e0 100644 --- a/lib/fog/aws/requests/storage/get_object.rb +++ b/lib/fog/aws/requests/storage/get_object.rb @@ -35,26 +35,30 @@ module Fog unless object_name raise ArgumentError.new('object_name is required') end + + params = { :headers => {} } if version_id = options.delete('versionId') - query = {'versionId' => version_id} + params[:query] = {'versionId' => version_id} end - headers = {} - headers.merge!(options) - if headers['If-Modified-Since'] - headers['If-Modified-Since'] = Fog::Time.at(headers['If-Modified-Since'].to_i).to_date_header + params[:headers].merge!(options) + if options['If-Modified-Since'] + params[:headers]['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header end - if headers['If-Unmodified-Since'] - headers['If-Unmodified-Since'] = Fog::Time.at(headers['If-Unmodified-Since'].to_i).to_date_header + if options['If-Unmodified-Since'] + params[:headers]['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header end - request({ + + if block_given? + params[:response_block] = Proc.new + end + + request(params.merge!({ :expects => [ 200, 206 ], - :headers => headers, :host => "#{bucket_name}.#{@host}", :idempotent => true, :method => 'GET', :path => CGI.escape(object_name), - :query => query - }, &block) + })) end end diff --git a/lib/fog/google/requests/storage/get_object.rb b/lib/fog/google/requests/storage/get_object.rb index 95090ab43..f26018ebd 100644 --- a/lib/fog/google/requests/storage/get_object.rb +++ b/lib/fog/google/requests/storage/get_object.rb @@ -32,22 +32,30 @@ module Fog unless object_name raise ArgumentError.new('object_name is required') end + + params = { :headers => {} } if version_id = options.delete('versionId') - query = {'versionId' => version_id} + params[:query] = {'versionId' => version_id} end - headers = {} - headers['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header if options['If-Modified-Since'] - headers['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header if options['If-Modified-Since'] - headers.merge!(options) - request({ - :expects => 200, - :headers => headers, - :host => "#{bucket_name}.#{@host}", - :idempotent => true, - :method => 'GET', - :path => CGI.escape(object_name), - :query => query - }, &block) + params[:headers].merge!(options) + if options['If-Modified-Since'] + params[:headers]['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header + end + if options['If-Modified-Since'] + params[:headers]['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header + end + + if block_given? + params[:response_block] = Proc.new + end + + request(params.merge!({ + :expects => 200, + :host => "#{bucket_name}.#{@host}", + :idempotent => true, + :method => 'GET', + :path => CGI.escape(object_name), + })) end end diff --git a/lib/fog/rackspace/requests/storage/get_object.rb b/lib/fog/rackspace/requests/storage/get_object.rb index 3cfb0c31a..534c8fa04 100644 --- a/lib/fog/rackspace/requests/storage/get_object.rb +++ b/lib/fog/rackspace/requests/storage/get_object.rb @@ -10,12 +10,18 @@ module Fog # * object<~String> - Name of object to look for # def get_object(container, object, &block) - request({ + params = {} + + if block_given? + params[:response_block] = Proc.new + end + + request(params.merge!({ :block => block, :expects => 200, :method => 'GET', :path => "#{Fog::Rackspace.escape(container)}/#{Fog::Rackspace.escape(object)}" - }, false, &block) + }, false)) end end