http_utilities 1.3.4 → 1.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/http_utilities.gemspec +1 -1
- data/lib/http_utilities/http/proxy_support.rb +70 -54
- data/lib/http_utilities.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d35f4d16afe0c14fb152deaa1f4f9499149b8092597048a9634ba7a18c2107fd
|
4
|
+
data.tar.gz: 9e1accc76b228e69dae8e9ab656451720dc75d2136c3988624eed5e8f8775aad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d8a4cf017084eb7227864328e86a118f143001e5201238987c000065214e74c9303dea25f9da4a28ac68b22ca20b098281cd7d8927e5e97227bd78b65bccdec
|
7
|
+
data.tar.gz: 9c9845c448c6f8135b6ab9fc437a1beafafa0352aad04e9f24794182bff1f0b62e2a6d1843fd4a9c2df85e8faa7dfe1c67eb6f267289a3e44a5cf85c45a2356c
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.5
|
data/http_utilities.gemspec
CHANGED
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
|
|
3
3
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
|
4
4
|
|
5
5
|
s.name = "http_utilities"
|
6
|
-
s.version = "1.3.
|
6
|
+
s.version = "1.3.5"
|
7
7
|
|
8
8
|
s.authors = ["Sebastian Johnsson"]
|
9
9
|
s.description = "Wrapper for Faraday with additional functionality"
|
@@ -3,65 +3,81 @@ module HttpUtilities
|
|
3
3
|
module ProxySupport
|
4
4
|
|
5
5
|
def set_proxy_options(options = {})
|
6
|
-
|
7
|
-
specific_proxy = options.fetch(:proxy, nil)
|
8
|
-
proxy_host = options.fetch(:proxy_host, nil)
|
9
|
-
proxy_port = options.fetch(:proxy_port, nil)
|
10
|
-
proxy_username = options.fetch(:proxy_username, nil)
|
11
|
-
proxy_password = options.fetch(:proxy_password, nil)
|
12
|
-
proxy_credentials = options.fetch(:proxy_credentials, nil)
|
13
|
-
proxy_type = options.fetch(:proxy_type, :all)
|
14
|
-
proxy_protocol = options.fetch(:proxy_protocol, :all)
|
6
|
+
proxy_opts = options.fetch(:proxy, nil)
|
15
7
|
|
16
|
-
if
|
17
|
-
self.proxy
|
8
|
+
if proxy_opts
|
9
|
+
self.proxy ||= {}
|
18
10
|
|
19
|
-
if
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
self.proxy[:host] = parts.first
|
25
|
-
self.proxy[:port] = parts.second.to_i
|
26
|
-
end
|
27
|
-
|
28
|
-
elsif proxy_host && proxy_port
|
29
|
-
self.proxy[:host] = proxy_host
|
30
|
-
self.proxy[:port] = proxy_port
|
31
|
-
|
32
|
-
elsif proxy_model_defined?
|
33
|
-
if specific_proxy && specific_proxy.is_a?(::Proxy)
|
34
|
-
proxy_object = specific_proxy
|
35
|
-
else
|
36
|
-
proxy_object = ::Proxy.get_random_proxy(protocol: proxy_protocol, proxy_type: proxy_type)
|
37
|
-
end
|
11
|
+
if proxy_opts.is_a?(String)
|
12
|
+
set_from_string(proxy_opts)
|
13
|
+
|
14
|
+
elsif proxy_opts.is_a?(Hash)
|
15
|
+
set_from_hash(proxy_opts)
|
38
16
|
|
39
|
-
|
17
|
+
elsif proxy_model_defined? && proxy_opts.is_a?(::Proxy)
|
18
|
+
set_from_object(proxy_opts)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def set_from_string(proxy_opts)
|
24
|
+
proxy_opts = proxy_opts.gsub(/^http(s)?:\/\//i, "")
|
25
|
+
parts = proxy_opts.split(":")
|
40
26
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
27
|
+
if parts.size.eql?(2)
|
28
|
+
self.proxy[:host] = parts.first
|
29
|
+
self.proxy[:port] = parts.second.to_i
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def set_from_hash(proxy_opts)
|
34
|
+
host = proxy_opts.fetch(:host, nil)
|
35
|
+
port = proxy_opts.fetch(:port, nil)
|
36
|
+
|
37
|
+
username = proxy_opts.fetch(:username, nil)
|
38
|
+
password = proxy_opts.fetch(:password, nil)
|
39
|
+
credentials = proxy_opts.fetch(:credentials, nil)
|
40
|
+
|
41
|
+
randomize = proxy_opts.fetch(:randomize, true)
|
42
|
+
type = proxy_opts.fetch(:type, :all)
|
43
|
+
protocol = proxy_opts.fetch(:protocol, :all)
|
44
|
+
|
45
|
+
if randomize && proxy_model_defined?
|
46
|
+
proxy_object = ::Proxy.get_random_proxy(protocol: protocol, proxy_type: type)
|
47
|
+
set_from_object(proxy_object)
|
48
|
+
else
|
49
|
+
if host && port
|
50
|
+
self.proxy[:host] = host
|
51
|
+
self.proxy[:port] = port
|
52
|
+
|
53
|
+
set_credentials(username, password)
|
47
54
|
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def set_from_object(proxy_object)
|
59
|
+
if proxy_object
|
60
|
+
self.proxy[:host] = proxy_object.host
|
61
|
+
self.proxy[:port] = proxy_object.port
|
62
|
+
username = !proxy_object.username.to_s.empty? ? proxy_object.username : nil
|
63
|
+
password = !proxy_object.password.to_s.empty? ? proxy_object.password : nil
|
48
64
|
|
49
|
-
|
65
|
+
set_credentials(username, password)
|
50
66
|
end
|
51
67
|
end
|
52
68
|
|
53
|
-
def
|
54
|
-
if
|
55
|
-
self.proxy[:username] =
|
56
|
-
self.proxy[:password] =
|
69
|
+
def set_credentials(username, password, credentials = {})
|
70
|
+
if username && password
|
71
|
+
self.proxy[:username] = username
|
72
|
+
self.proxy[:password] = password
|
57
73
|
|
58
|
-
elsif
|
59
|
-
if
|
60
|
-
self.proxy[:username] =
|
61
|
-
self.proxy[:password] =
|
74
|
+
elsif credentials
|
75
|
+
if credentials.is_a?(Hash)
|
76
|
+
self.proxy[:username] = credentials[:username]
|
77
|
+
self.proxy[:password] = credentials[:password]
|
62
78
|
|
63
|
-
elsif (
|
64
|
-
parts =
|
79
|
+
elsif (credentials.is_a?(String))
|
80
|
+
parts = credentials.split(":")
|
65
81
|
|
66
82
|
if parts && parts.any? && parts.size == 2
|
67
83
|
self.proxy[:username] = parts.first
|
@@ -72,19 +88,19 @@ module HttpUtilities
|
|
72
88
|
end
|
73
89
|
|
74
90
|
def proxy_model_defined?
|
75
|
-
defined
|
76
|
-
defined
|
91
|
+
defined = Module.const_get("Proxy").is_a?(Class) rescue false
|
92
|
+
defined = (defined && ::Proxy.respond_to?(:get_random_proxy))
|
77
93
|
|
78
94
|
return defined
|
79
95
|
end
|
80
96
|
|
81
97
|
def generate_proxy_options
|
82
|
-
proxy_options
|
98
|
+
proxy_options = {}
|
83
99
|
|
84
100
|
if self.proxy && !self.proxy[:host].to_s.empty? && !self.proxy[:port].to_s.empty?
|
85
|
-
proxy_options[:uri]
|
86
|
-
proxy_options[:user]
|
87
|
-
proxy_options[:password]
|
101
|
+
proxy_options[:uri] = "http://#{self.proxy[:host]}:#{self.proxy[:port]}"
|
102
|
+
proxy_options[:user] = self.proxy[:username] if !self.proxy[:username].to_s.empty?
|
103
|
+
proxy_options[:password] = self.proxy[:password] if !self.proxy[:password].to_s.empty?
|
88
104
|
end
|
89
105
|
|
90
106
|
return proxy_options
|
data/lib/http_utilities.rb
CHANGED