http_utilities 1.0.2 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8fb30e7ce4a8093f1bc2929fc0d94a68e289d40
4
- data.tar.gz: 19cb1986479a7a2ae1957aec32180ecf98c330ac
3
+ metadata.gz: 1c3ac10c88e4301a9be712c06747987b7bbec37e
4
+ data.tar.gz: 85a711b2b5cc059682522bc9c03cd09140afe4a6
5
5
  SHA512:
6
- metadata.gz: 4873c9349bbe2196f1f157ef972e16c0f9241b5e2bf9a67c96c4726b8f4a8a5b4194d207d66198886d4dc7af4ac70f44f152086337fbeba525563d221b138615
7
- data.tar.gz: d2853749c566baf145dfde797ee07c983340d4d83142438bd641cffe3e326ddef73aed208e4d956c46d5f1781b4b34e82e8174a4b9a67ec4c0f5c80c76faf1a0
6
+ metadata.gz: 933e6381c41d5bfd6c0d1e337b936087eaf4e6ea8319caa0ab9878739ecfec1271a596fb551b02d98ada765caa56b5a73dbb8bb3fe337110d09a19bdf8e3a386
7
+ data.tar.gz: b4101592f6b9c6ced152ca5bf933ca74b51cb54bc7c80f486a095612d246a387d6d4ffd23cad4fbfa40f498861d0c6da49d4d6a2efa9f86b6813e92eb90c1a18
data/Gemfile CHANGED
@@ -1,8 +1,9 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "nokogiri", ">= 1.5.5"
4
- gem "mechanize", ">= 2.5"
5
- gem "multi_xml", ">= 0.5"
3
+ gem "nokogiri", ">= 1.5.5"
4
+ gem "mechanize", ">= 2.5"
5
+ gem "multi_xml", ">= 0.5"
6
+ gem "net-ssh", ">= 2.8"
6
7
 
7
8
  gem "activerecord-import", :require => false
8
9
 
@@ -3,10 +3,9 @@ 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.0.2"
6
+ s.version = "1.0.5"
7
7
 
8
8
  s.authors = ["Sebastian Johnsson"]
9
- s.date = "2012-11-22"
10
9
  s.description = "Wrapper for common Http Libraries (Net:HTTP/Open URI/Curl)"
11
10
 
12
11
  s.homepage = "http://github.com/Agiley/http_utilities"
@@ -15,6 +14,7 @@ Gem::Specification.new do |s|
15
14
  s.add_dependency(%q<nokogiri>, [">= 1.5.5"])
16
15
  s.add_dependency(%q<mechanize>, [">= 2.5"])
17
16
  s.add_dependency(%q<multi_xml>, [">= 0.5"])
17
+ s.add_dependency(%q<net-ssh>, [">= 2.8"])
18
18
  s.add_dependency(%q<activerecord-import>, [">= 0"])
19
19
 
20
20
  s.add_development_dependency(%q<rails>, [">= 0"])
@@ -35,13 +35,15 @@ module HttpUtilities
35
35
  self.proxy = specific_proxy
36
36
 
37
37
  elsif (proxy_model_defined?)
38
- proxy_object = Proxy.get_random_proxy(self.proxy[:protocol], self.proxy[:type])
38
+ proxy_object = Proxy.get_random_proxy(self.proxy[:protocol], self.proxy[:type])
39
39
 
40
40
  #log(:info, "[HttpUtilities::Http::ProxySupport] - Randomized Proxy object: #{proxy_object.inspect}")
41
41
 
42
42
  if (proxy_object)
43
43
  self.proxy[:host] = proxy_object.host
44
44
  self.proxy[:port] = proxy_object.port
45
+ proxy_username = proxy_object.username.present? ? proxy_object.username : nil
46
+ proxy_password = proxy_object.password.present? ? proxy_object.password : nil
45
47
  end
46
48
  end
47
49
  end
@@ -52,20 +54,20 @@ module HttpUtilities
52
54
  def set_proxy_credentials(proxy_username, proxy_password, proxy_credentials)
53
55
  if (self.using_proxy? && (!self.proxy[:username] || !self.proxy[:password]))
54
56
  if (proxy_username && proxy_password)
55
- self.proxy[:username] = proxy_username
56
- self.proxy[:password] = proxy_password
57
+ self.proxy[:username] = proxy_username
58
+ self.proxy[:password] = proxy_password
57
59
 
58
60
  elsif (proxy_credentials)
59
61
  if (proxy_credentials.is_a?(Hash))
60
- self.proxy[:username] = proxy_credentials[:username]
61
- self.proxy[:password] = proxy_credentials[:password]
62
+ self.proxy[:username] = proxy_credentials[:username]
63
+ self.proxy[:password] = proxy_credentials[:password]
62
64
 
63
65
  elsif (proxy_credentials.is_a?(String))
64
66
  parts = proxy_credentials.split(":")
65
67
 
66
68
  if (parts && parts.any? && parts.size >= 2)
67
- self.proxy[:username] = parts.first
68
- self.proxy[:password] = parts.second
69
+ self.proxy[:username] = parts.first
70
+ self.proxy[:password] = parts.second
69
71
  end
70
72
  end
71
73
  end
@@ -1,9 +1,12 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
+ require 'socket'
4
+ require 'net/ssh/proxy/socks5'
5
+ require 'activerecord-import'
6
+
3
7
  module HttpUtilities
4
8
  module Proxies
5
9
  class ProxyChecker
6
- require 'activerecord-import'
7
10
  attr_accessor :client, :processed_proxies
8
11
  attr_accessor :limit, :minimum_successful_attempts, :maximum_failed_attempts
9
12
 
@@ -43,20 +46,52 @@ module HttpUtilities
43
46
  end
44
47
  end
45
48
 
46
- def check_proxy(proxy, timeout = 60)
49
+ def check_proxy(proxy)
50
+ Rails.logger.info "#{Time.now}: Will check if proxy #{proxy.proxy_address} is working."
51
+
52
+ self.send("check_#{proxy.protocol}_proxy")
53
+ end
54
+
55
+ def check_socks_proxy(proxy, test_host: "whois.verisign-grs.com", test_port: 43, test_query: "=google.com")
56
+ valid_proxy = false
57
+
58
+ begin
59
+ socks_proxy = Net::SSH::Proxy::SOCKS5.new(proxy.host, proxy.port, proxy.socks_proxy_credentials)
60
+ client = socks_proxy.open(test_host, test_port)
61
+
62
+ client.write("#{test_query}\r\n")
63
+ response = client.read
64
+
65
+ valid_proxy = (response && response.present?)
66
+
67
+ rescue StandardError => e
68
+ Rails.logger.error "Exception occured while trying to check proxy #{proxy.proxy_address}. Error Class: #{e.class}. Error Message: #{e.message}"
69
+ valid_proxy = false
70
+ end
71
+
72
+ if (valid_proxy)
73
+ Rails.logger.info "#{Time.now}: Proxy #{proxy.proxy_address} is working!"
74
+ else
75
+ Rails.logger.info "#{Time.now}: Proxy #{proxy.proxy_address} is not working!"
76
+ end
77
+
78
+ self.processed_proxies << {proxy: proxy, valid: valid_proxy}
79
+ end
80
+
81
+ def check_http_proxy(proxy, timeout = 60)
47
82
  document = nil
48
83
  valid_proxy = false
49
84
 
50
- options = {:method => :net_http,
51
- :use_proxy => true,
52
- :proxy => proxy.proxy_address,
53
- :proxy_protocol => proxy.protocol,
54
- :timeout => timeout,
55
- :maximum_redirects => 1,
56
- :disable_auth => true
85
+ options = {method: :net_http,
86
+ use_proxy: true,
87
+ proxy: proxy.proxy_address,
88
+ proxy_protocol: proxy.protocol,
89
+ timeout: timeout,
90
+ maximum_redirects: 1,
91
+ disable_auth: true
57
92
  }
58
93
 
59
- Rails.logger.info "#{Time.now}: Fetching Proxy #{proxy.proxy_address}."
94
+ Rails.logger.info "#{Time.now}: Fetching Google.com with proxy #{proxy.proxy_address}."
60
95
 
61
96
  response = self.client.retrieve_parsed_html("http://www.google.com/webhp?hl=en", options)
62
97
 
@@ -73,7 +108,7 @@ module HttpUtilities
73
108
  Rails.logger.info "Title is: #{title}. Proxy #{proxy.proxy_address}"
74
109
 
75
110
  rescue Exception => e
76
- Rails.logger.error "Exception occured while trying to validate proxy. Error Class: #{e.class}. Error Message: #{e.message}"
111
+ Rails.logger.error "Exception occured while trying to check proxy #{proxy.proxy_address}. Error Class: #{e.class}. Error Message: #{e.message}"
77
112
  valid_proxy = false
78
113
  end
79
114
  end
@@ -85,10 +120,10 @@ module HttpUtilities
85
120
  Rails.logger.info "#{Time.now}: Proxy #{proxy.proxy_address} is not working!"
86
121
  end
87
122
 
88
- self.processed_proxies << {:proxy => proxy, :valid => valid_proxy}
123
+ self.processed_proxies << {proxy: proxy, valid: valid_proxy}
89
124
  end
90
125
 
91
- def update_proxies()
126
+ def update_proxies
92
127
  columns = [:host, :port, :last_checked_at, :valid_proxy, :successful_attempts, :failed_attempts]
93
128
  values = []
94
129
 
@@ -63,6 +63,18 @@ module HttpUtilities
63
63
  def proxy_credentials
64
64
  return ::Proxy.format_proxy_credentials(self.username, self.password)
65
65
  end
66
+
67
+ def socks_proxy_credentials
68
+ credentials = {}
69
+
70
+ if (!self.username.empty? && !self.password.empty?)
71
+ credentials = {user: self.username, password: self.password}
72
+ elsif (!self.username.empty? && self.password.empty?)
73
+ credentials = {user: self.username}
74
+ end
75
+
76
+ return credentials
77
+ end
66
78
  end
67
79
 
68
80
  end
@@ -1,6 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module HttpUtilities
3
- VERSION = "1.0.2"
3
+ VERSION = "1.0.5"
4
4
 
5
5
  require File.join(File.dirname(__FILE__), 'http_utilities/railtie') if defined?(Rails)
6
6
 
metadata CHANGED
@@ -1,125 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_utilities
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Johnsson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2012-11-22 00:00:00.000000000 Z
11
+ date: 2014-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.5.5
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.5.5
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mechanize
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.5'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: multi_xml
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.5'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: net-ssh
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '2.8'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '2.8'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: activerecord-import
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '>='
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '>='
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rails
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - '>='
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
89
  version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - '>='
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - '>='
101
+ - - ">="
88
102
  - !ruby/object:Gem::Version
89
103
  version: '0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - '>='
108
+ - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: sqlite3
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - '>='
115
+ - - ">="
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - '>='
122
+ - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: mysql2
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - '>='
129
+ - - ">="
116
130
  - !ruby/object:Gem::Version
117
131
  version: 0.3.11
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - '>='
136
+ - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: 0.3.11
125
139
  description: Wrapper for common Http Libraries (Net:HTTP/Open URI/Curl)
@@ -184,17 +198,17 @@ require_paths:
184
198
  - lib
185
199
  required_ruby_version: !ruby/object:Gem::Requirement
186
200
  requirements:
187
- - - '>='
201
+ - - ">="
188
202
  - !ruby/object:Gem::Version
189
203
  version: '0'
190
204
  required_rubygems_version: !ruby/object:Gem::Requirement
191
205
  requirements:
192
- - - '>='
206
+ - - ">="
193
207
  - !ruby/object:Gem::Version
194
208
  version: 1.3.5
195
209
  requirements: []
196
210
  rubyforge_project:
197
- rubygems_version: 2.0.3
211
+ rubygems_version: 2.2.2
198
212
  signing_key:
199
213
  specification_version: 2
200
214
  summary: Wrapper for common Http Libraries (Net:HTTP/Open URI/Curl)