the_mask 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 52659c1a94c839e53e22a7f8f102f669131a9c57
4
- data.tar.gz: 68868c3f8b546f9dd2f2e97f281b56886b3b9bc9
3
+ metadata.gz: 2e23912c7fb5129bb925acbd4e9e609ebe056919
4
+ data.tar.gz: 552488893034e2a9833f794c8d09af9e9b246531
5
5
  SHA512:
6
- metadata.gz: 08ae3c783d2502c83ba962cc4ddb37f32dfb3bd992a33f32f1a7a2f7f5fa681772453804d1e3e11feca3e278b1d2962f19851b801698f31962e10fb26f6411bf
7
- data.tar.gz: c5b7ec9fc1bc9f64694fe61701f9f7e7d67c9161b39cbadfaa6813596c124d5681ecec4ff96d2529c7e8d7538ed84eaff9b258268adfc005873483a0378ebb03
6
+ metadata.gz: cf1ecb0d2bf67090fc760a5bb5f198127a3050e6c442c62ddb50a2c3d99c66f59abc177152d58bc082c59ead384087a3d6b620ec648bc14670b9ace58376fb63
7
+ data.tar.gz: c5459ce1dd5e26f70b3e7f7202294bf99339ec48df2d6671d7f4edb58bd101c720def4dd7d043e5f6032210e96ed4ad593fa316a6963359934c4e73738bb127e
data/README.md CHANGED
@@ -29,13 +29,13 @@ Or install it yourself as:
29
29
  This will return the body data from the supplied URL.
30
30
 
31
31
  Available options:
32
- `read_timeout` = Read timeout in seconds (default: 3)
33
- `open_timeout` = Open timeout in seconds (default: 3)
34
- `timeout` = Timeout for whole procedure in seconds (default: 5)
35
- `max_tries` = Maximum attempts in reading the page (default: 3)
36
- `min_page_length` = Minimum page length in bytes, if not satisfied, reattempt retrieval (default: 100 bytes)
37
- `reset_ua` = Reset user agent on every request. (default: true)
38
- `force` = Force continuous opening of page until data is retrieved (default: false)
32
+ `read_timeout = Read timeout in seconds (default: 3)`
33
+ `open_timeout = Open timeout in seconds (default: 3)`
34
+ `timeout = Timeout for whole procedure in seconds (default: 5)`
35
+ `max_tries = Maximum attempts in reading the page (default: 3)`
36
+ `min_page_length = Minimum page length in bytes, if not satisfied, reattempt retrieval (default: 100 bytes)`
37
+ `reset_ua = Reset user agent on every request. (default: true)`
38
+ `force = Force continuous opening of page until data is retrieved (default: false)`
39
39
 
40
40
  Proxy options example:
41
41
  `mask_connect = TheMask::Connect.new(proxy: { ip: '127.0.0.1', port: 8080, username: 'asd333', password: 'asd333' })`
@@ -1,5 +1,6 @@
1
1
  module TheMask
2
2
  class ProxyList
3
+ #TheMask::ProxyList::Proxy class
3
4
  class Proxy
4
5
  attr_accessor :ip, :port, :username, :password
5
6
 
@@ -20,16 +21,29 @@ module TheMask
20
21
  end
21
22
 
22
23
  end
24
+ #ProxyList class
25
+ attr_accessor :proxy_list
23
26
 
24
27
  def initialize(arr = [])
25
28
  @proxy_list ||= []
26
- arr.each{ |element| @proxy_list << [TheMask::ProxyList::Proxy.new(element), 0] } unless arr.empty?
29
+
30
+ arr.each do |element|
31
+ @proxy_list << [TheMask::ProxyList::Proxy.new(element), 0] unless arr.empty?
32
+ end
27
33
  end
28
34
 
29
35
  def get_proxy
30
- @proxy_list = @proxy_list.sort_by(&:last) # Least used proxy
36
+ if @proxy_list.empty?
37
+ raise "Tried to get_proxy when proxy list is empty. Check that your input proxy list is populated."
38
+ end
39
+
40
+ @proxy_list = @proxy_list.sort_by(&:last) # Least used proxy list sort by 2nd element in inner array
31
41
  @proxy_list[0] = [@proxy_list[0][0], @proxy_list[0][1] + 1]
32
42
  @proxy_list[0][0]
33
43
  end
44
+
45
+ def remove_proxy!(proxy)
46
+ @proxy_list.delete(proxy)
47
+ end
34
48
  end
35
49
  end
@@ -39,8 +39,9 @@ module TheMask
39
39
 
40
40
  def open_url(url)
41
41
  read_proc = Proc.new do
42
- tries = 0
43
- page_data = nil
42
+ tries = 0 #Total URL retrieval tries
43
+ page_data = nil #Retrieved page html data
44
+
44
45
  begin
45
46
  tries += 1
46
47
 
@@ -50,14 +51,24 @@ module TheMask
50
51
 
51
52
  @agent.user_agent = TheMask.get_random_user_agent_str if @reset_user_agent
52
53
 
53
- unless @proxies.nil?
54
- proxy = @proxies.get_proxy
54
+ proxy = nil
55
+
56
+ begin
57
+ unless @proxies.nil?
58
+ begin
59
+ proxy = @proxies.get_proxy
55
60
 
56
- if proxy.username && proxy.password
57
- @agent.set_proxy proxy.ip, proxy.port, proxy.username, proxy.password
58
- else
59
- @agent.set_proxy proxy.ip, proxy.port
61
+ if proxy.username && proxy.password
62
+ @agent.set_proxy proxy.ip, proxy.port, proxy.username, proxy.password
63
+ else
64
+ @agent.set_proxy proxy.ip, proxy.port
65
+ end
66
+ end
60
67
  end
68
+ rescue Timeout::ExitException => e
69
+ #Exception timeout from mechanize
70
+ @proxies.remove_proxy!(proxy)
71
+ retry
61
72
  end
62
73
 
63
74
  Timeout::timeout(@timeout) do
@@ -1,3 +1,3 @@
1
1
  module TheMask
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: the_mask
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saoud Khalifah
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-21 00:00:00.000000000 Z
11
+ date: 2015-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -89,9 +89,6 @@ files:
89
89
  - lib/the_mask/socket.rb
90
90
  - lib/the_mask/user_agents.rb
91
91
  - lib/the_mask/version.rb
92
- - the_mask-0.1.0.gem
93
- - the_mask-0.1.1.gem
94
- - the_mask-0.1.2.gem
95
92
  - the_mask.gemspec
96
93
  homepage: http://github.com/saouddk/the_mask
97
94
  licenses:
data/the_mask-0.1.0.gem DELETED
Binary file
data/the_mask-0.1.1.gem DELETED
Binary file
data/the_mask-0.1.2.gem DELETED
Binary file