lib/fog/storage/aws.rb in fog-0.8.2 vs lib/fog/storage/aws.rb in fog-0.9.0
- old
+ new
@@ -1,12 +1,11 @@
module Fog
- module AWS
- class Storage < Fog::Service
+ module Storage
+ class AWS < Fog::Service
requires :aws_access_key_id, :aws_secret_access_key
recognizes :endpoint, :region, :host, :path, :port, :scheme, :persistent
- recognizes :provider # remove post deprecation
model_path 'fog/storage/models/aws'
collection :directories
model :directory
collection :files
@@ -15,17 +14,19 @@
request_path 'fog/storage/requests/aws'
request :abort_multipart_upload
request :complete_multipart_upload
request :copy_object
request :delete_bucket
+ request :delete_bucket_policy
request :delete_bucket_website
request :delete_object
request :get_bucket
request :get_bucket_acl
request :get_bucket_location
request :get_bucket_logging
request :get_bucket_object_versions
+ request :get_bucket_policy
request :get_bucket_versioning
request :get_bucket_website
request :get_object
request :get_object_acl
request :get_object_torrent
@@ -38,10 +39,11 @@
request :list_parts
request :post_object_hidden_fields
request :put_bucket
request :put_bucket_acl
request :put_bucket_logging
+ request :put_bucket_policy
request :put_bucket_versioning
request :put_bucket_website
request :put_object
request :put_object_acl
request :put_object_url
@@ -57,15 +59,21 @@
:aws_secret_access_key => @aws_secret_access_key
)
end
def url(params, expires)
+ params[:headers] ||= {}
params[:headers]['Date'] = expires.to_i
- params[:path] = CGI.escape(params[:path]).gsub('%2F', '/')
- query = [params[:query]].compact
+ params[:path] = Fog::AWS.escape(params[:path]).gsub('%2F', '/')
+ query = []
+ if params[:query]
+ for key, value in params[:query]
+ query << "#{key}=#{Fog::AWS.escape(value)}"
+ end
+ end
query << "AWSAccessKeyId=#{@aws_access_key_id}"
- query << "Signature=#{CGI.escape(signature(params))}"
+ query << "Signature=#{Fog::AWS.escape(signature(params))}"
query << "Expires=#{params[:headers]['Date']}"
"https://#{@host}/#{params[:path]}?#{query.join('&')}"
end
end
@@ -151,17 +159,10 @@
def self.reset
@data = nil
end
def initialize(options={})
- unless options.delete(:provider)
- location = caller.first
- warning = "[yellow][WARN] Fog::AWS::Storage.new is deprecated, use Fog::Storage.new(:provider => 'AWS') instead[/]"
- warning << " [light_black](" << location << ")[/] "
- Formatador.display_line(warning)
- end
-
require 'mime/types'
@aws_access_key_id = options[:aws_access_key_id]
@aws_secret_access_key = options[:aws_secret_access_key]
options[:region] ||= 'us-east-1'
@host = options[:host] || case options[:region]
@@ -214,17 +215,10 @@
# * options<~Hash> - config arguments for connection. Defaults to {}.
#
# ==== Returns
# * S3 object with connection to aws.
def initialize(options={})
- unless options.delete(:provider)
- location = caller.first
- warning = "[yellow][WARN] Fog::AWS::Storage.new is deprecated, use Fog::Storage.new(:provider => 'AWS') instead[/]"
- warning << " [light_black](" << location << ")[/] "
- Formatador.display_line(warning)
- end
-
require 'fog/core/parser'
require 'mime/types'
@aws_access_key_id = options[:aws_access_key_id]
@aws_secret_access_key = options[:aws_secret_access_key]
@@ -266,11 +260,11 @@
end
def signature(params)
string_to_sign =
<<-DATA
-#{params[:method]}
+#{params[:method].to_s.upcase}
#{params[:headers]['Content-MD5']}
#{params[:headers]['Content-Type']}
#{params[:headers]['Date']}
DATA
@@ -298,15 +292,36 @@
subdomain = nil
end
canonical_resource = @path.dup
unless subdomain.nil? || subdomain == @host
- canonical_resource << "#{CGI.escape(subdomain).downcase}/"
+ canonical_resource << "#{Fog::AWS.escape(subdomain).downcase}/"
end
canonical_resource << params[:path].to_s
canonical_resource << '?'
for key in (params[:query] || {}).keys.sort
- if %w{acl location logging notification partNumber policy requestPayment torrent uploadId uploads versionId versioning versions website}.include?(key)
+ if %w{
+ acl
+ location
+ logging
+ notification
+ partNumber
+ policy
+ requestPayment
+ reponse-cache-control
+ response-content-disposition
+ response-content-encoding
+ response-content-language
+ response-content-type
+ response-expires
+ torrent
+ uploadId
+ uploads
+ versionId
+ versioning
+ versions
+ website
+ }.include?(key)
canonical_resource << "#{key}#{"=#{params[:query][key]}" unless params[:query][key].nil?}&"
end
end
canonical_resource.chop!
string_to_sign << canonical_resource