Skip to content

Instantly share code, notes, and snippets.

@amalagaura
Forked from andrey-kazakov/socksify_faraday.rb
Last active August 29, 2015 13:59
Show Gist options
  • Save amalagaura/10773754 to your computer and use it in GitHub Desktop.
Save amalagaura/10773754 to your computer and use it in GitHub Desktop.
# requires socksify gem
require "socksify"
require 'socksify/http'
# use w/ OAuth2 like OAuth2::Client.new(id, secret, connection_opts: { proxy: 'socks://127.0.0.1:9050' })
class Faraday::Adapter::NetHttp
def net_http_connection(env)
if proxy = env[:request][:proxy]
if proxy[:uri].scheme == 'socks'
Net::HTTP.SOCKSProxy(proxy[:uri].host, proxy[:uri].port)
else
Net::HTTP::Proxy(proxy[:uri].host, proxy[:uri].port, proxy[:user], proxy[:password])
end
else
Net::HTTP
end.new(env[:url].host, env[:url].port)
end
end
# requires socksify gem
require "socksify"
require 'socksify/http'
# Mechanize: call @agent.set_socks(addr, port) before using
# any of it's methods; it might be working in other cases,
# but I just didn't tried :)
class Mechanize::HTTP::Agent
public
def set_socks addr, port
set_http unless @http
class << @http
attr_accessor :socks_addr, :socks_port
def http_class
Net::HTTP.SOCKSProxy(socks_addr, socks_port)
end
end
@http.socks_addr = addr
@http.socks_port = port
end
end
@amalagaura
Copy link
Author

Updated socksify_faraday.rb for Faraday 0.9.0rc6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment