proxy_fetcher 0.6.0 → 0.6.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 +4 -4
- data/CHANGELOG.md +11 -0
- data/bin/proxy_fetcher +14 -0
- data/lib/proxy_fetcher.rb +2 -0
- data/lib/proxy_fetcher/document/adapters/nokogiri_adapter.rb +0 -8
- data/lib/proxy_fetcher/document/adapters/oga_adapter.rb +0 -8
- data/lib/proxy_fetcher/document/node.rb +10 -2
- data/lib/proxy_fetcher/version.rb +1 -1
- data/proxy_fetcher.gemspec +1 -1
- data/spec/proxy_fetcher/document/node_spec.rb +15 -0
- data/spec/spec_helper.rb +2 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db8683f8d34f01ebb03c71753999649cdcbeba61
|
4
|
+
data.tar.gz: 480d289e2fe9bb038b04f080d005492fdfee7f7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29129bcd201af8e5f8cf003331b5abeda3a590cf6a4d2cc91c95fa23622f513d66d5867bfcb6a5278f6dd706041c95b0d07d71e6173c8dd10c82fab7955fd550
|
7
|
+
data.tar.gz: e84e36c60f0a22018677c1896dffa51b45b76f9518e7edc8b62d3aeb4908525cfae12d3a8b60c9d547e7ef8217f75ed27fd8ac9d5ae149f5ef2b4b3d82346a51
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,17 @@
|
|
2
2
|
|
3
3
|
Reverse Chronological Order:
|
4
4
|
|
5
|
+
## `0.6.1` (2017-12-11)
|
6
|
+
|
7
|
+
* Fix gem executable to check dependencies for adapters
|
8
|
+
* Code clean
|
9
|
+
* Some new specs
|
10
|
+
|
11
|
+
## `0.6.0` (2017-12-08)
|
12
|
+
|
13
|
+
* Make HTML parser configurable (Nokogiri, Oga, custom one)
|
14
|
+
* Documentation
|
15
|
+
|
5
16
|
## `0.5.1` (2017-11-13)
|
6
17
|
|
7
18
|
* Fix ProxyFetcher CLI
|
data/bin/proxy_fetcher
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
begin
|
4
|
+
require 'nokogiri'
|
5
|
+
rescue LoadError
|
6
|
+
puts "Seems like you haven't installed 'nokogiri' gem that is used by ProxyFetcher for HTML parsing.\n" \
|
7
|
+
"Install it with the command: `gem install nokogiri` or check out it's documentation:\n" \
|
8
|
+
'http://www.nokogiri.org/tutorials/installing_nokogiri.html'
|
9
|
+
exit(1)
|
10
|
+
end
|
11
|
+
|
3
12
|
require 'optparse'
|
4
13
|
require 'proxy_fetcher'
|
5
14
|
|
@@ -38,6 +47,11 @@ OptionParser.new do |opts|
|
|
38
47
|
opts.on('-j', '--json', '# Dump proxies to the JSON format') do
|
39
48
|
options[:json] = true
|
40
49
|
end
|
50
|
+
|
51
|
+
opts.on('-v', '--version', '# Shows gem version') do
|
52
|
+
puts ProxyFetcher.gem_version.to_s
|
53
|
+
exit(0)
|
54
|
+
end
|
41
55
|
end.parse!
|
42
56
|
|
43
57
|
ProxyFetcher.config.providers = options[:providers] if options[:providers]
|
data/lib/proxy_fetcher.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'uri'
|
2
2
|
require 'net/https'
|
3
3
|
|
4
|
+
require File.dirname(__FILE__) + '/proxy_fetcher/version'
|
5
|
+
|
4
6
|
require File.dirname(__FILE__) + '/proxy_fetcher/exceptions'
|
5
7
|
require File.dirname(__FILE__) + '/proxy_fetcher/configuration'
|
6
8
|
require File.dirname(__FILE__) + '/proxy_fetcher/configuration/providers_registry'
|
@@ -10,14 +10,6 @@ module ProxyFetcher
|
|
10
10
|
end
|
11
11
|
|
12
12
|
class Node < ProxyFetcher::Document::Node
|
13
|
-
def at_xpath(*args)
|
14
|
-
self.class.new(node.at_xpath(*args))
|
15
|
-
end
|
16
|
-
|
17
|
-
def at_css(*args)
|
18
|
-
self.class.new(node.at_css(*args))
|
19
|
-
end
|
20
|
-
|
21
13
|
def attr(*args)
|
22
14
|
clear(node.attr(*args))
|
23
15
|
end
|
@@ -10,14 +10,6 @@ module ProxyFetcher
|
|
10
10
|
end
|
11
11
|
|
12
12
|
class Node < ProxyFetcher::Document::Node
|
13
|
-
def at_xpath(*args)
|
14
|
-
self.class.new(node.at_xpath(*args))
|
15
|
-
end
|
16
|
-
|
17
|
-
def at_css(*args)
|
18
|
-
self.class.new(node.at_css(*args))
|
19
|
-
end
|
20
|
-
|
21
13
|
def attr(*args)
|
22
14
|
clear(node.attribute(*args).value)
|
23
15
|
end
|
@@ -11,16 +11,24 @@ module ProxyFetcher
|
|
11
11
|
self.class.new(node.public_send(method, selector))
|
12
12
|
end
|
13
13
|
|
14
|
+
def at_xpath(*args)
|
15
|
+
self.class.new(node.at_xpath(*args))
|
16
|
+
end
|
17
|
+
|
18
|
+
def at_css(*args)
|
19
|
+
self.class.new(node.at_css(*args))
|
20
|
+
end
|
21
|
+
|
14
22
|
def content_at(*args)
|
15
23
|
clear(find(*args).content)
|
16
24
|
end
|
17
25
|
|
18
26
|
def content
|
19
|
-
raise "
|
27
|
+
raise "`#{__method__}` must be implemented for specific adapter class!"
|
20
28
|
end
|
21
29
|
|
22
30
|
def html
|
23
|
-
raise "
|
31
|
+
raise "`#{__method__}` must be implemented for specific adapter class!"
|
24
32
|
end
|
25
33
|
|
26
34
|
protected
|
data/proxy_fetcher.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'proxy_fetcher/version'
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = 'proxy_fetcher'
|
7
7
|
gem.version = ProxyFetcher.gem_version
|
8
|
-
gem.date = '2017-12-
|
8
|
+
gem.date = '2017-12-11'
|
9
9
|
gem.summary = 'Ruby gem for dealing with proxy lists from different providers'
|
10
10
|
gem.description = 'This gem can help your Ruby application to make HTTP(S) requests ' \
|
11
11
|
'using proxies by fetching and validating proxy lists from the different providers.'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ProxyFetcher::Document::Node do
|
4
|
+
context 'overridable methods' do
|
5
|
+
it 'raises an error' do
|
6
|
+
node = ProxyFetcher::Document::Node.new('')
|
7
|
+
|
8
|
+
%w[content html].each do |method|
|
9
|
+
expect { node.public_send(method) }.to raise_error do |error|
|
10
|
+
expect(error.message).to include("`#{method}` must be implemented")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'simplecov'
|
2
2
|
SimpleCov.add_filter 'spec'
|
3
|
+
SimpleCov.add_filter 'version'
|
3
4
|
|
4
5
|
if ENV['CI'] || ENV['TRAVIS'] || ENV['COVERALLS'] || ENV['JENKINS_URL']
|
5
6
|
require 'coveralls'
|
@@ -15,7 +16,7 @@ require 'proxy_fetcher'
|
|
15
16
|
|
16
17
|
Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
|
17
18
|
|
18
|
-
adapter = ENV['BUNDLE_GEMFILE'][/.+\/(.+)\.gemfile/i, 1]
|
19
|
+
adapter = ENV['BUNDLE_GEMFILE'][/.+\/(.+)\.gemfile/i, 1] || :nokogiri
|
19
20
|
puts "Configured adapter: '#{adapter}'"
|
20
21
|
|
21
22
|
ProxyFetcher.configure do |config|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: proxy_fetcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Bulai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -74,6 +74,7 @@ files:
|
|
74
74
|
- spec/proxy_fetcher/client_spec.rb
|
75
75
|
- spec/proxy_fetcher/configuration_spec.rb
|
76
76
|
- spec/proxy_fetcher/document/adapters_spec.rb
|
77
|
+
- spec/proxy_fetcher/document/node_spec.rb
|
77
78
|
- spec/proxy_fetcher/providers/base_spec.rb
|
78
79
|
- spec/proxy_fetcher/providers/free_proxy_list_spec.rb
|
79
80
|
- spec/proxy_fetcher/providers/free_proxy_list_ssl_spec.rb
|
@@ -106,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
107
|
version: '0'
|
107
108
|
requirements: []
|
108
109
|
rubyforge_project:
|
109
|
-
rubygems_version: 2.
|
110
|
+
rubygems_version: 2.5.1
|
110
111
|
signing_key:
|
111
112
|
specification_version: 4
|
112
113
|
summary: Ruby gem for dealing with proxy lists from different providers
|