diff --git a/lib/fog/storage/requests/aws/get_object.rb b/lib/fog/storage/requests/aws/get_object.rb index 64d433321..cfd06a804 100644 --- a/lib/fog/storage/requests/aws/get_object.rb +++ b/lib/fog/storage/requests/aws/get_object.rb @@ -76,12 +76,7 @@ module Fog response.status = 412 else response.status = 200 - response.headers = { - 'Content-Length' => object['Size'], - 'Content-Type' => object['Content-Type'], - 'ETag' => object['ETag'], - 'Last-Modified' => object['LastModified'] - } + response.headers = object.reject {|key, value| key == :body} unless block_given? response.body = object[:body] else diff --git a/lib/fog/storage/requests/aws/put_object.rb b/lib/fog/storage/requests/aws/put_object.rb index 24b0fec27..1421d07a2 100644 --- a/lib/fog/storage/requests/aws/put_object.rb +++ b/lib/fog/storage/requests/aws/put_object.rb @@ -65,13 +65,21 @@ module Fog response.status = 200 object = { :body => data[:body], - 'Content-Type' => data[:headers]['Content-Type'], + 'Content-Type' => options['Content-Type'] || data[:headers]['Content-Type'], 'ETag' => Fog::AWS::Mock.etag, 'Key' => object_name, 'LastModified' => Fog::Time.now.to_date_header, - 'Size' => data[:headers]['Content-Length'], - 'StorageClass' => 'STANDARD' + 'Size' => options['Content-Length'] || data[:headers]['Content-Length'], + 'StorageClass' => options['x-amz-storage-class'] || 'STANDARD' } + + for key, value in options + case key + when 'Cache-Control', 'Content-Disposition', 'Content-Encoding', 'Content-MD5', 'Expires', /^x-amz-meta-/ + object[key] = value + end + end + bucket[:objects][object_name] = object response.headers = { 'Content-Length' => object['Size'], diff --git a/lib/fog/storage/requests/google/get_object.rb b/lib/fog/storage/requests/google/get_object.rb index 09ce59031..d81f02e69 100644 --- a/lib/fog/storage/requests/google/get_object.rb +++ b/lib/fog/storage/requests/google/get_object.rb @@ -73,12 +73,7 @@ module Fog response.status = 412 else response.status = 200 - response.headers = { - 'Content-Length' => object['Size'], - 'Content-Type' => object['Content-Type'], - 'ETag' => object['ETag'], - 'Last-Modified' => object['LastModified'] - } + response.headers = object.reject {|key, value| key == :body} unless block_given? response.body = object[:body] else diff --git a/lib/fog/storage/requests/google/put_object.rb b/lib/fog/storage/requests/google/put_object.rb index 3f7882073..40e9508bc 100644 --- a/lib/fog/storage/requests/google/put_object.rb +++ b/lib/fog/storage/requests/google/put_object.rb @@ -59,13 +59,21 @@ module Fog response.status = 200 object = { :body => data[:body], - 'Content-Type' => data[:headers]['Content-Type'], + 'Content-Type' => options['Content-Type'] || data[:headers]['Content-Type'], 'ETag' => Fog::Google::Mock.etag, 'Key' => object_name, 'LastModified' => Fog::Time.now.to_date_header, - 'Size' => data[:headers]['Content-Length'], + 'Size' => options['Content-Length'] || data[:headers]['Content-Length'], 'StorageClass' => 'STANDARD' } + + for key, value in options + case key + when 'Cache-Control', 'Content-Disposition', 'Content-Encoding', 'Content-MD5', 'Expires', /^x-goog-meta-/ + object[key] = value + end + end + bucket[:objects][object_name] = object response.headers = { 'Content-Length' => object['Size'],