proxtopus 0.0.31 → 0.0.35

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzBmMDU3N2E2MzY1YmZkM2Q3ZjI0ZWE5OGUxZTQ5MzlmNTg0NDA4Nw==
4
+ N2QzNWNhM2NhOTJhNjVlODBjOGU1ZjhiOGM4N2Q5NjE5NmRlMTA3ZA==
5
5
  data.tar.gz: !binary |-
6
- M2I3OTMxMzUxYjExMTQwNjJiMWY2MmVjOTdkZWQ2ZDdlYzZhYjBhZQ==
6
+ YTgxYTQ3NzFiMTNkMTVkOTg3NjBlMzFkNWM3MjRkMmJlZDhmZmQ5Ng==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2Q5ZGUzZjZlYWRkMjQzNjAwODcwMTZmYTE2ZjM0MDRjMWZlZjgwZDliNDNi
10
- MWIxZDY2MGI1M2JhMjdmYTQ2YjhlOWExZTAzYThlM2RlYTc5OWZkZmRlZDk0
11
- NWIzOWQzMDhhYjViOGUxODgwOGVhMjViOTJjNmRkYmYyYmUxZDE=
9
+ Zjc4NmVhOTM2NmNkNDZkZjQ5NzIyMDk3NDVmYTQwZTk4MTlmOGQ4MjM4NmM3
10
+ MWY0NDg3YjU4ZDBmZjkxNzZlZjhhZjEwNGU1NDI4NTQ1ZjgwNjZiNDI2NWQ3
11
+ NjkyNGE1MTUyY2ZiYWVmODFmZTVjYjI3MDllMjNiMzBmM2VhMTk=
12
12
  data.tar.gz: !binary |-
13
- NDk5MTQyMGQ3M2ZhYjVmZjQ3MDZmMjcyZDJhYjkxMmU1ZGE0NzllODc3MDcx
14
- ZGUwMWZlNWRkMzY4MDI4NzVjMjBlY2NhZTMzMGZjMmRkMjZiMWZiZjRjM2Jk
15
- NWYzODgwOWQ1MTcyNTNlNWNmODkzZTUyNmMwMzEyYjhjYmY1NjE=
13
+ YzVkNzZhYjg1NDRhYzUyZTY0NGQzZWVjNWE2YjNlZTdkMzgxYzhmMjQxNWM1
14
+ NmIyMDVkMThkZjQ4MWJjNTQ5M2NiY2VmYWRiYzE1MjdkNmNkM2QwYmU5YmZh
15
+ NDE0OTgxMzc5YWNhYTgzNDFmODY2NWEyZjZiZjg2OTc3MWM4NzE=
@@ -16,8 +16,8 @@ module Proxtopus
16
16
  @resources = ResourceSet.new(resources)
17
17
  @proxies = ProxySet.new
18
18
  self
19
- rescue => e
20
- puts "Proxtopus::Client -- #{e.inspect}"
19
+ #rescue => e
20
+ # puts "Proxtopus::Client -- #{e.inspect}"
21
21
  end
22
22
 
23
23
  # p.collect({:cs => ['US'], etc...})
@@ -26,22 +26,31 @@ module Proxtopus
26
26
  #use_opts = (opts.nil?)? api_options : opts
27
27
  #get(use_opts)
28
28
  @resources.each do |resource|
29
- @proxies.push(resource.collect)
29
+ response = Request.get(resource)
30
+ #puts response.proxies.inspect
31
+ #gets
32
+ @proxies.push(response.proxies)
30
33
  end
31
- rescue => e
32
- puts "Proxtopus::Client -- #{e.inspect}"
34
+ #puts "[@proxies in Client]"
35
+ #puts @proxies.inspect
36
+ #puts
37
+ #puts
38
+ #gets
39
+ @proxies
40
+ #rescue => e
41
+ # puts "Proxtopus::Client -- #{e.inspect}"
33
42
  end
34
43
 
35
44
  def random_proxy
36
45
  @proxies[rand(0..(@proxies.count-1))]
37
- rescue => e
38
- puts "Proxtopus::Client -- #{e.inspect}"
46
+ #rescue => e
47
+ # puts "Proxtopus::Client -- #{e.inspect}"
39
48
  end
40
49
 
41
50
  def delete_proxy(proxy)
42
51
  @proxies.delete(proxy)
43
- rescue => e
44
- puts "Proxtopus::Client -- #{e.inspect}"
52
+ #rescue => e
53
+ # puts "Proxtopus::Client -- #{e.inspect}"
45
54
  end
46
55
 
47
56
  private
@@ -4,11 +4,25 @@ module Proxtopus
4
4
  attr_accessor :host, :port, :protocol, :country, :anonymity
5
5
 
6
6
  def initialize(host, port, protocol, country, anonymity)
7
- @host = host.to_s
7
+ @host = host.to_s.downcase
8
8
  @port = port.to_i
9
- @protocol = protocol.to_s
9
+ @protocol = protocol.to_s.downcase
10
10
  @country = country.to_s
11
- @anonymity = anonymity.to_s
11
+ if anonymity =~ /h(igh(ly)?)?\s*a(non(ymous)?)?\s*(p(roxy)?)?/ix
12
+ @anonymity = 'HAP'
13
+ elsif anonymity =~ /a(non(ymous)?)?\s*(p(roxy)?)?/ix
14
+ @anonymity = 'AP'
15
+ elsif anonymity =~ /t(rans(parent)?)?\s*(p(roxy)?)?/ix
16
+ @anonymity = 'TP'
17
+ else
18
+ puts "Invalid anonymity '#{anonymity}'... ignoring."
19
+ @anonymity = nil
20
+ end
21
+
22
+ #puts "[Initialized Proxy]"
23
+ #puts "#{@procotol}://#{@host}:#{@port} w/ #{@anonymity},#{@country}"
24
+ #puts
25
+ #puts
12
26
  end
13
27
 
14
28
  def ==(other)
@@ -1,16 +1,39 @@
1
1
  module Proxtopus
2
- class Request# < Mechanize
2
+ # class Request# < Mechanize
3
+ module Request
3
4
 
4
- attr_reader :resource, :response
5
+ class << self
6
+ def get_page(resource)
7
+ raise ArgumentError, "Request.new() requires resource to be of type Proxtopus::Resource!" if !resource.is_a?(Proxtopus::Resource)
8
+ AGENT.get(resource.uri.to_s)
9
+ end
10
+
11
+ def get(resource)
12
+ response = Response.new(get_page(resource), resource)
13
+ #puts "[response in Request]"
14
+ #puts response.inspect
15
+ #puts
16
+ #puts
17
+ #gets
18
+ response
19
+ #puts response.proxies.inspect
20
+ #gets
21
+ end
22
+ end
23
+
24
+ =begin
25
+ attr_reader :page
5
26
 
6
27
  def initialize(resource)
7
28
  #puts "to request"
8
29
  raise ArgumentError, "Request.new() requires resource to be of type Proxtopus::Resource!" if !resource.is_a?(Proxtopus::Resource)
9
30
 
10
- @resource = resource
11
- page = Mechanize.new.get(@resource.uri.to_s)
12
- @response = Response.new(page.body, @resource.format, @resource.elements)
31
+ #@resource = resource
32
+ @page = Mechanize.new.get(resource.uri.to_s)
33
+ #@response = Response.new(page.body, @resource.format, @resource.elements)
34
+
35
+ self
13
36
  end
14
-
37
+ =end
15
38
  end
16
39
  end
@@ -1,33 +1,46 @@
1
1
  module Proxtopus
2
2
  class Resource
3
3
 
4
- attr_reader :request, :response, :url, :params, :format, :elements
4
+ attr_reader :url, :params, :format, :elements
5
5
 
6
- def initialize(resource)
7
- #puts resource.class
8
- #puts
9
- #puts resource.inspect
10
- if resource.is_a?(Proxtopus::Resource)
11
- @request = resource.request
12
- @response = resource.response
13
- @url = resource.url
14
- @params = resource.params
15
- @format = resource.format
16
- @elements = resource.elements
17
- elsif resource.is_a?(Hash)
18
- @request = resource[:request] || raise(ArgumentError, "Resource must have a specified request hash!")
19
- @response = resource[:response] || raise(ArgumentError, "Resource must have a specified resource hash!")
20
- @url = resource[:request][:url] || raise(ArgumentError, "Resource must have a specified request url!")
21
- @params = resource[:request][:params] || raise(ArgumentError, "Resource must have a specified request param!")
22
- @format = resource[:response][:format] || raise(ArgumentError, "Resource must have a specified resource format!")
23
- @elements = resource[:response][:elements] || raise(ArgumentError, "Resource must have a specified resource set of elemenra!")
24
- else
25
- raise ArgumentError, "Resource.new() expects resource as a Proxtopus::Resource or Hash!"
26
- end
6
+ def initialize(request, response)
7
+ raise ArgumentError, "Resource.new() expects request as a hash of config values!" if !request.is_a?(Hash)
8
+ raise ArgumentError, "Resource.new() expects response as a hash of config values!" if !response.is_a?(Hash)
9
+
10
+ #@request = resource[:request] || raise(ArgumentError, "Resource must have a specified request hash!")
11
+ #@response = resource[:response] || raise(ArgumentError, "Resource must have a specified resource hash!")
12
+ @url = request[:url] || raise(ArgumentError, "Resource must have a specified request url!")
13
+ @params = request[:params] || nil
14
+ @format = response[:format] || raise(ArgumentError, "Resource must have a specified resource format!")
15
+ @elements = response[:elements] || raise(ArgumentError, "Resource must have a specified resource set of elemenra!")
16
+
17
+ #if resource.is_a?(Proxtopus::Resource)
18
+ # @request = resource.request
19
+ # @response = resource.response
20
+ # @url = resource.url
21
+ # @params = resource.params
22
+ # @format = resource.format
23
+ # @elements = resource.elements
24
+ #elsif resource.is_a?(Hash)
25
+ # @request = resource[:request] || raise(ArgumentError, "Resource must have a specified request hash!")
26
+ # @response = resource[:response] || raise(ArgumentError, "Resource must have a specified resource hash!")
27
+ # @url = resource[:request][:url] || raise(ArgumentError, "Resource must have a specified request url!")
28
+ # @params = resource[:request][:params] || raise(ArgumentError, "Resource must have a specified request param!")
29
+ # @format = resource[:response][:format] || raise(ArgumentError, "Resource must have a specified resource format!")
30
+ # @elements = resource[:response][:elements] || raise(ArgumentError, "Resource must have a specified resource set of elemenra!")
31
+ #else
32
+ # raise ArgumentError, "Resource.new() expects resource as a Proxtopus::Resource or Hash!"
33
+ #end
27
34
  end
28
35
 
29
36
  def collect
30
- Request.new(self).response.parsed
37
+ #request = Request.new(self)
38
+ #results = Request.new(self).response.parsed
39
+ #puts "[RESULTS]"
40
+ #puts results.inspect
41
+ #puts
42
+ #puts
43
+ #results
31
44
  end
32
45
 
33
46
  def uri
@@ -2,8 +2,8 @@ module Proxtopus
2
2
  class ResourceSet < Array
3
3
 
4
4
  def initialize(resources=nil)
5
- if resources
6
- resources.each { |r| self.push(r) }
5
+ if resources.is_a?(Array)
6
+ resources.each { |r| push(r) }
7
7
  end
8
8
  end
9
9
 
@@ -13,7 +13,7 @@ module Proxtopus
13
13
  end
14
14
 
15
15
  if resource.is_a?(Hash)
16
- resource = Resource.new(resource)
16
+ resource = Resource.new(resource[:request], resource[:response])
17
17
  end
18
18
 
19
19
  super(resource) if !include?(resource)
@@ -1,27 +1,36 @@
1
1
  module Proxtopus
2
2
  class Response
3
3
 
4
- attr_reader :body, :format, :parsed
4
+ attr_reader :page, :resource, :proxies
5
5
 
6
- def initialize(page, format, elements)
6
+ def initialize(page, resource)
7
7
  #puts "to response"
8
8
  #raise ArgumentError, "Response.new() expects page to be of type Mechanize::Page!" if !page.is_a?(Mechanize::Page)
9
9
  #raise ArgumentError, "Response.new() expects format to be of type Symbol!" if !format.is_a?(Symbol)
10
10
  #raise ArgumentError, "Response.new() expects elements to be of type Symbol!" if !format.is_a?(Symbol)
11
11
 
12
- @body = page
13
- @format = format
14
- @elements = elements
12
+ @page = page
13
+ @resource = resource
14
+ #@body = page
15
+ #@format = format
16
+ #@elements = elements
15
17
 
16
- if format == :json
17
- @parsed = Parser.json(@body, @elements)
18
- elsif format == :xml
19
- @parsed = Parser.xml(@body, @elements)
18
+ if resource.format == :json
19
+ @proxies = Parser.json(page.body, resource.elements)
20
+ elsif resource.format == :xml
21
+ @proxies = Parser.xml(page.body, resource.elements)
20
22
  #elsif format == :rss
21
23
  # @parsed = Parser.rss(@body, @elements)
22
24
  else
23
- puts "Format #{format} is currenly unsupported... consider adding it =]"
25
+ raise ArgumentError, "Format #{resource.format} is currenly unsupported... consider adding it =]"
24
26
  end
27
+
28
+ #puts "[@proxies in Response]"
29
+ #puts @proxies.inspect
30
+ #puts
31
+ #puts
32
+ #gets
33
+ @proxies
25
34
  end
26
35
 
27
36
  end
@@ -5,30 +5,40 @@ module Proxtopus
5
5
  class << self
6
6
  def json(body, elements)
7
7
  ret = ProxySet.new
8
- els = JSON.parse(body)[elements[:root]]
8
+ els = JSON.parse(body)[elements[:root]] || nil
9
9
  els.each do |el|
10
- host = el[elements[:host]]
11
- port = el[elements[:port]]
12
- anonymity = el[elements[:anonymity]]
13
- protocol = el[elements[:protocol]]
14
- country = el[elements[:country]]
15
- ret.push(Proxy.new(host, port, anonymity, protocol, country))
10
+ host = el[elements[:host]] || nil
11
+ port = el[elements[:port]] || nil
12
+ anonymity = el[elements[:anonymity]] || nil
13
+ protocol = el[elements[:protocol]] || nil
14
+ country = el[elements[:country]] || nil
15
+ ret.push(Proxy.new(host, port, protocol, country, anonymity))
16
16
  end
17
+ #puts "[ret in ResponseParser->json]"
18
+ #puts ret.inspect
19
+ #puts
20
+ #puts
21
+ #gets
17
22
  ret
18
23
  end
19
24
 
20
25
  def xml(body, elements)
21
26
  ret = ProxySet.new
22
27
  doc = Nokogiri::HTML(body)
23
- els = doc.xpath(elements[:root])
28
+ els = doc.xpath(elements[:root]) || nil
24
29
  els.each do |el|
25
- host = el.xpath(elements[:host]).text
26
- port = el.xpath(elements[:port]).text
27
- anonymity = el.xpath(elements[:anonymity]).text
28
- protocol = el.xpath(elements[:protocol]).text
29
- country = el.xpath(elements[:country]).text
30
- ret.push(Proxy.new(host, port, anonymity, protocol, country))
30
+ host = el.xpath(elements[:host]).text || nil
31
+ port = el.xpath(elements[:port]).text || nil
32
+ anonymity = el.xpath(elements[:anonymity]).text || nil
33
+ protocol = el.xpath(elements[:protocol]).text || nil
34
+ country = el.xpath(elements[:country]).text || nil
35
+ ret.push(Proxy.new(host, port, protocol, country, anonymity))
31
36
  end
37
+ #puts "[ret in ResponseParser->xml]"
38
+ #puts ret.inspect
39
+ #puts
40
+ #puts
41
+ #gets
32
42
  ret
33
43
  end
34
44
 
data/lib/proxtopus.rb CHANGED
@@ -3,6 +3,7 @@ Bundler.require(:default)
3
3
 
4
4
  require 'uri'
5
5
 
6
+ require_relative './proxtopus/countries/carmen'
6
7
  require_relative './proxtopus/client'
7
8
  require_relative './proxtopus/request'
8
9
  require_relative './proxtopus/response_parser'
@@ -13,6 +14,8 @@ require_relative './proxtopus/proxy'
13
14
  require_relative './proxtopus/proxy_set'
14
15
 
15
16
  module Proxtopus
17
+
18
+ AGENT = Mechanize.new
16
19
 
17
20
  class << self
18
21
  # p = Proxtopus.new_client do
@@ -28,8 +31,8 @@ module Proxtopus
28
31
  # Client.new(&block) if block_given?
29
32
  #end
30
33
  def client(resources_file)
31
- resources = "[#{File.read(resources_file)}]".gsub!(/\r|\n|\s/,'')
32
- Client.new(eval(resources))
34
+ resources = eval("[#{File.read(resources_file)}]".gsub!(/\r|\n|\s/,''))
35
+ Client.new(resources)
33
36
  end
34
37
  end
35
38
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proxtopus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.31
4
+ version: 0.0.35
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan Barron