Module: Httply::Proxies
- Included in:
- Client
- Defined in:
- lib/httply/proxies.rb
Instance Method Summary collapse
- #determine_proxy(options) ⇒ Object
- #generate_faraday_proxy(proxy) ⇒ Object
- #proxy_from_array(options) ⇒ Object
- #proxy_from_hash(options, proxy) ⇒ Object
- #proxy_from_object(proxy_object, proxy) ⇒ Object
- #proxy_from_string(options, proxy) ⇒ Object
- #proxy_model_defined? ⇒ Boolean
- #set_credentials(username, password, proxy) ⇒ Object
Instance Method Details
#determine_proxy(options) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/httply/proxies.rb', line 4 def determine_proxy() proxy = nil if proxy ||= {} if .is_a?(String) proxy = proxy_from_string(, proxy) elsif .is_a?(Hash) && !.empty? proxy = proxy_from_hash(, proxy) elsif .is_a?(Array) && .any? proxy = proxy_from_array(, proxy) elsif proxy_model_defined? && .is_a?(::Proxy) proxy = proxy_from_object(, proxy) end if proxy && !proxy.empty? proxy = proxy.has_key?(:uri) ? proxy : generate_faraday_proxy(proxy) end end return proxy end |
#generate_faraday_proxy(proxy) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/httply/proxies.rb', line 113 def generate_faraday_proxy(proxy) = {} if proxy && !proxy[:host].to_s.empty? && !proxy[:port].to_s.empty? [:uri] = "http://#{proxy[:host]}:#{proxy[:port]}" [:user] = proxy[:username] unless proxy[:username].to_s.empty? [:password] = proxy[:password] unless proxy[:password].to_s.empty? end return end |
#proxy_from_array(options) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/httply/proxies.rb', line 72 def proxy_from_array() item = .sample if item.is_a?(String) proxy = proxy_from_string(item, proxy) elsif item.is_a?(Hash) && !item.empty? proxy = proxy_from_hash(item, proxy) elsif proxy_model_defined? && item.is_a?(::Proxy) proxy = proxy_from_object(item, proxy) end return proxy end |
#proxy_from_hash(options, proxy) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/httply/proxies.rb', line 43 def proxy_from_hash(, proxy) randomize = .fetch(:randomize, false) type = .fetch(:type, :all) protocol = .fetch(:protocol, :http) if randomize && proxy_model_defined? proxy_object = ::Proxy.get_random_proxy(protocol: protocol, proxy_type: type) proxy = proxy_from_object(proxy_object, proxy) else uri = .fetch(:uri, nil) if uri.to_s.empty? host = .fetch(:host, nil) port = .fetch(:port, nil) username = .fetch(:username, nil) password = .fetch(:password, nil) if !host.to_s.empty? && !port.to_s.empty? proxy[:host] = host proxy[:port] = port proxy = set_credentials(username, password, proxy) end end end return proxy end |
#proxy_from_object(proxy_object, proxy) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/httply/proxies.rb', line 86 def proxy_from_object(proxy_object, proxy) if proxy_object proxy[:host] = proxy_object.host proxy[:port] = proxy_object.port username = !proxy_object.username.to_s.empty? ? proxy_object.username : nil password = !proxy_object.password.to_s.empty? ? proxy_object.password : nil proxy = set_credentials(username, password, proxy) end return proxy end |
#proxy_from_string(options, proxy) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/httply/proxies.rb', line 31 def proxy_from_string(, proxy) = .gsub(/^http(s)?:\/\//i, "") parts = .split(":") if parts.size.eql?(2) proxy[:host] = parts.first proxy[:port] = parts.second.to_i end return proxy end |
#proxy_model_defined? ⇒ Boolean
106 107 108 109 110 111 |
# File 'lib/httply/proxies.rb', line 106 def proxy_model_defined? defined = Module.const_get("Proxy").is_a?(Class) rescue false defined = (defined && ::Proxy.respond_to?(:get_random_proxy)) return defined end |
#set_credentials(username, password, proxy) ⇒ Object
99 100 101 102 103 104 |
# File 'lib/httply/proxies.rb', line 99 def set_credentials(username, password, proxy) proxy[:username] = username unless username.to_s.empty? proxy[:password] = password unless password.to_s.empty? return proxy end |