Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added support for specifying an HTTP Proxy

  • Loading branch information...
commit 4661cefabca674e54de5d1ca6782000038eb7623 1 parent 522a53e
@ruckus ruckus authored sikachu committed
Showing with 39 additions and 0 deletions.
  1. +27 −0 lib/paperclip/storage/s3.rb
  2. +12 −0 test/storage_test.rb
View
27 lib/paperclip/storage/s3.rb
@@ -95,6 +95,12 @@ def self.extended base
@url = ":s3_path_url"
end
@url = ":asset_host" if @options[:url].to_s == ":asset_host"
+
+ @http_proxy = @options[:http_proxy] || nil
+ if @http_proxy
+ @s3_options.merge!({:proxy => @http_proxy})
+ end
+
AWS::S3::Base.establish_connection!( @s3_options.merge(
:access_key_id => @s3_credentials[:access_key_id],
:secret_access_key => @s3_credentials[:secret_access_key]
@@ -121,6 +127,27 @@ def expiring_url(time = 3600, style_name = default_style)
def bucket_name
@bucket
end
+
+ def using_http_proxy?
+ !!@http_proxy
+ end
+
+ def http_proxy_host
+ using_http_proxy? ? @http_proxy[:host] : nil
+ end
+
+ def http_proxy_port
+ using_http_proxy? ? @http_proxy[:port] : nil
+ end
+
+ def http_proxy_user
+ using_http_proxy? ? @http_proxy[:user] : nil
+ end
+
+ def http_proxy_password
+ using_http_proxy? ? @http_proxy[:password] : nil
+ end
+
def s3_host_name
@s3_host_name || "s3.amazonaws.com"
View
12 test/storage_test.rb
@@ -41,9 +41,11 @@ def rails_env(env)
context "Parsing S3 credentials" do
setup do
+ @proxy_settings = {:host => "127.0.0.1", :port => 8888, :user => "foo", :password => "bar"}
AWS::S3::Base.stubs(:establish_connection!)
rebuild_model :storage => :s3,
:bucket => "testing",
+ :http_proxy => @proxy_settings,
:s3_credentials => {:not => :important}
@dummy = Dummy.new
@@ -68,6 +70,16 @@ def rails_env(env)
rails_env("not really an env")
assert_equal({:test => "12345"}, @avatar.parse_credentials(:test => "12345"))
end
+
+ should "support HTTP proxy settings" do
+ rails_env("development")
+ assert_equal(true, @avatar.using_http_proxy?)
+ assert_equal(@proxy_settings[:host], @avatar.http_proxy_host)
+ assert_equal(@proxy_settings[:port], @avatar.http_proxy_port)
+ assert_equal(@proxy_settings[:user], @avatar.http_proxy_user)
+ assert_equal(@proxy_settings[:password], @avatar.http_proxy_password)
+ end
+
end
context "" do
Please sign in to comment.
Something went wrong with that request. Please try again.