From 5d8fec15015d631749cd9d3b7d39b380be24c400 Mon Sep 17 00:00:00 2001 From: geemus Date: Tue, 8 Feb 2011 10:06:44 -0800 Subject: [PATCH] [aws&google|storage] make signature public method supports some edge case caching stuff closes #155 --- lib/fog/storage/aws.rb | 41 ++++++++++++++++++++------------------- lib/fog/storage/google.rb | 23 +++++++++++----------- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/lib/fog/storage/aws.rb b/lib/fog/storage/aws.rb index c33d540bb..e4675fcea 100644 --- a/lib/fog/storage/aws.rb +++ b/lib/fog/storage/aws.rb @@ -286,26 +286,6 @@ module Fog @connection.reset end - private - - def request(params, &block) - params[:headers]['Date'] = Fog::Time.now.to_date_header - params[:headers]['Authorization'] = "AWS #{@aws_access_key_id}:#{signature(params)}" - params[:expects] = [307, *params[:expects]].flatten - # FIXME: ToHashParser should make this not needed - original_params = params.dup - - response = @connection.request(params, &block) - - if response.status == 307 - uri = URI.parse(response.headers['Location']) - Formatador.display_line("[yellow][WARN] fog: followed redirect to #{uri.host}, connecting to the matching region will be more performant[/]") - response = Fog::Connection.new("#{@scheme}://#{uri.host}:#{@port}", false).request(original_params, &block) - end - - response - end - def signature(params) string_to_sign = <<-DATA @@ -356,6 +336,27 @@ DATA signed_string = @hmac.sign(string_to_sign) signature = Base64.encode64(signed_string).chomp! end + + + private + + def request(params, &block) + params[:headers]['Date'] = Fog::Time.now.to_date_header + params[:headers]['Authorization'] = "AWS #{@aws_access_key_id}:#{signature(params)}" + params[:expects] = [307, *params[:expects]].flatten + # FIXME: ToHashParser should make this not needed + original_params = params.dup + + response = @connection.request(params, &block) + + if response.status == 307 + uri = URI.parse(response.headers['Location']) + Formatador.display_line("[yellow][WARN] fog: followed redirect to #{uri.host}, connecting to the matching region will be more performant[/]") + response = Fog::Connection.new("#{@scheme}://#{uri.host}:#{@port}", false).request(original_params, &block) + end + + response + end end end end diff --git a/lib/fog/storage/google.rb b/lib/fog/storage/google.rb index b3689faf8..303da0151 100644 --- a/lib/fog/storage/google.rb +++ b/lib/fog/storage/google.rb @@ -209,17 +209,6 @@ module Fog @connection.reset end - private - - def request(params, &block) - params[:headers]['Date'] = Fog::Time.now.to_date_header - params[:headers]['Authorization'] = "GOOG1 #{@google_storage_access_key_id}:#{signature(params)}" - - response = @connection.request(params, &block) - - response - end - def signature(params) string_to_sign = <<-DATA @@ -271,6 +260,18 @@ DATA signed_string = @hmac.sign(string_to_sign) signature = Base64.encode64(signed_string).chomp! end + + + private + + def request(params, &block) + params[:headers]['Date'] = Fog::Time.now.to_date_header + params[:headers]['Authorization'] = "GOOG1 #{@google_storage_access_key_id}:#{signature(params)}" + + response = @connection.request(params, &block) + + response + end end end end