diff --git a/lib/fog/aws/models/storage/file.rb b/lib/fog/aws/models/storage/file.rb index c913133aa..beaa20b7a 100644 --- a/lib/fog/aws/models/storage/file.rb +++ b/lib/fog/aws/models/storage/file.rb @@ -12,12 +12,17 @@ module Fog identity :key, :aliases => 'Key' attr_writer :body - attribute :content_length, :aliases => ['Content-Length', 'Size'], :type => :integer - attribute :content_type, :aliases => 'Content-Type' - attribute :etag, :aliases => ['Etag', 'ETag'] - attribute :last_modified, :aliases => ['Last-Modified', 'LastModified'], :type => :time - attribute :owner, :aliases => 'Owner' - attribute :storage_class, :aliases => 'StorageClass' + attribute :cache_control, :aliases => 'Cache-Control' + attribute :content_disposition, :aliases => 'Content-Disposition' + attribute :content_encoding, :aliases => 'Content-Encoding' + attribute :content_length, :aliases => ['Content-Length', 'Size'], :type => :integer + attribute :content_md5, :aliases => 'Content-MD5' + attribute :content_type, :aliases => 'Content-Type' + attribute :etag, :aliases => ['Etag', 'ETag'] + attribute :expires, :aliases => 'Expires' + attribute :last_modified, :aliases => ['Last-Modified', 'LastModified'], :type => :time + attribute :owner, :aliases => 'Owner' + attribute :storage_class, :aliases => ['x-amz-storage-class', 'StorageClass'] def acl=(new_acl) valid_acls = ['private', 'public-read', 'public-read-write', 'authenticated-read'] @@ -82,12 +87,15 @@ module Fog if options != {} Formatador.display_line("[yellow][WARN] options param is deprecated, use acl= instead[/] [light_black](#{caller.first})[/]") end - if @acl - options['x-amz-acl'] ||= @acl - end - if content_type - options['Content-Type'] = content_type - end + options['x-amz-acl'] ||= @acl if @acl + options['Cache-Control'] = cache_control if cache_control + options['Content-Disposition'] = content_disposition if content_disposition + options['Content-Encoding'] = content_encoding if content_encoding + options['Content-MD5'] = content_md5 if content_md5 + options['Content-Type'] = content_type if content_type + options['Expires'] = expires if expires + options['x-amz-storage-class'] = storage_class if storage_class + data = connection.put_object(directory.key, @key, @body, options) @etag = data.headers['ETag'] true diff --git a/lib/fog/aws/models/storage/files.rb b/lib/fog/aws/models/storage/files.rb index 6c1ab0635..2f43634ab 100644 --- a/lib/fog/aws/models/storage/files.rb +++ b/lib/fog/aws/models/storage/files.rb @@ -46,7 +46,7 @@ module Fog :key => key } for key, value in data.headers - if ['Content-Length', 'Content-Type', 'ETag', 'Last-Modified'].include?(key) + if model.aliases.include?(key) file_data[key] = value end end @@ -67,7 +67,7 @@ module Fog :key => key } for key, value in data.headers - if ['Content-Length', 'Content-Type', 'ETag', 'Last-Modified'].include?(key) + if model.aliases.include?(key) file_data[key] = value end end diff --git a/lib/fog/google/models/storage/file.rb b/lib/fog/google/models/storage/file.rb index 22fca0821..cec8336b8 100644 --- a/lib/fog/google/models/storage/file.rb +++ b/lib/fog/google/models/storage/file.rb @@ -12,12 +12,17 @@ module Fog identity :key, :aliases => 'Key' attr_writer :body - attribute :content_length, :aliases => ['Content-Length', 'Size'], :type => :integer - attribute :content_type, :aliases => 'Content-Type' - attribute :etag, :aliases => ['Etag', 'ETag'] - attribute :last_modified, :aliases => ['Last-Modified', 'LastModified'], :type => :time - attribute :owner, :aliases => 'Owner' - attribute :storage_class, :aliases => 'StorageClass' + attribute :cache_control, :aliases => 'Cache-Control' + attribute :content_disposition, :aliases => 'Content-Disposition' + attribute :content_encoding, :aliases => 'Content-Encoding' + attribute :content_length, :aliases => ['Content-Length', 'Size'], :type => :integer + attribute :content_md5, :aliases => 'Content-MD5' + attribute :content_type, :aliases => 'Content-Type' + attribute :etag, :aliases => ['Etag', 'ETag'] + attribute :expires, :aliases => 'Expires' + attribute :last_modified, :aliases => ['Last-Modified', 'LastModified'], :type => :time + attribute :owner, :aliases => 'Owner' + attribute :storage_class, :aliases => ['x-goog-storage-class', 'StorageClass'] def acl=(new_acl) valid_acls = ['private', 'public-read', 'public-read-write', 'authenticated-read'] @@ -85,12 +90,14 @@ module Fog if options != {} Formatador.display_line("[yellow][WARN] options param is deprecated, use acl= instead[/] [light_black](#{caller.first})[/]") end - if @acl - options['x-goog-acl'] ||= @acl - end - if content_type - options['Content-Type'] = content_type - end + options['x-goog-acl'] ||= @acl if @acl + options['Cache-Control'] = cache_control if cache_control + options['Content-Disposition'] = content_disposition if content_disposition + options['Content-Encoding'] = content_encoding if content_encoding + options['Content-MD5'] = content_md5 if content_md5 + options['Content-Type'] = content_type if content_type + options['Expires'] = expires if expires + data = connection.put_object(directory.key, @key, @body, options) @etag = data.headers['ETag'] true diff --git a/lib/fog/google/models/storage/files.rb b/lib/fog/google/models/storage/files.rb index cd1a8b373..37de35839 100644 --- a/lib/fog/google/models/storage/files.rb +++ b/lib/fog/google/models/storage/files.rb @@ -46,7 +46,7 @@ module Fog :key => key } for key, value in data.headers - if ['Content-Length', 'Content-Type', 'ETag', 'Last-Modified'].include?(key) + if model.aliases.include?(key) file_data[key] = value end end @@ -67,7 +67,7 @@ module Fog :key => key } for key, value in data.headers - if ['Content-Length', 'Content-Type', 'ETag', 'Last-Modified'].include?(key) + if model.aliases.include?(key) file_data[key] = value end end diff --git a/lib/fog/rackspace/models/storage/files.rb b/lib/fog/rackspace/models/storage/files.rb index f4d7963b3..ada7c0836 100644 --- a/lib/fog/rackspace/models/storage/files.rb +++ b/lib/fog/rackspace/models/storage/files.rb @@ -43,7 +43,7 @@ module Fog :key => key } for key, value in data.headers - if ['Content-Length', 'Content-Type', 'ETag', 'Last-Modified'].include?(key) + if model.aliases.include?(key) file_data[key] = value end end @@ -62,7 +62,7 @@ module Fog data = connection.head_object(directory.name, key, options) file_data = { :key => key } for key, value in data.headers - if ['Content-Length', 'Content-Type', 'ETag', 'Last-Modified'].include?(key) + if model.aliases.include?(key) file_data[key] = value end end