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