spidy 0.2.7 → 0.2.8

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
  SHA256:
3
- metadata.gz: 177e6b5e3b4f864251d7071d23b2b42b219d8193673a5b57ee9b376e393092a9
4
- data.tar.gz: 92b39a277d752eb5b1944f822702eae803356f7f5e3211b1f91e2d9ad635090e
3
+ metadata.gz: 43e5538d56f4d4115a1bb2cb662f0722d688ad44d8212506436492f0ee3e0570
4
+ data.tar.gz: b0db640263836c7244876a50219ed4f916c6c2f7777e11c7e13d11c2142714dc
5
5
  SHA512:
6
- metadata.gz: b4078e3d1ad9813b0273f267d99bf7a9bf4473bb86b6cfa4fa283e6c5b060fa248e0b6fb517bede448f94e0dcebbb90ee71ef4eeb4bd5a45b1405c50005985fe
7
- data.tar.gz: 00aa2cd512cf3a083082227234f59148d86e8ee0e4f602e07d1c67cbf9f3e8160b9144ebd29f3a67efded607c1705c2ce3008df235325afc7f3a715a6dd7527d
6
+ metadata.gz: 3d6dcfea624a7710eec941e55238334596edced66d60a09b046c5b057de06c2fb7d279c3d912a8e054ef206d9d5c148ee1e43d3394d6d8c30d364fa17fcc69fb
7
+ data.tar.gz: fe42ba4880e255aa2a09d360cfec59aaf199ec60407d045641d8ac3cad8319fb3277f2b3e91760e24ab879ec224860628c30fce2282e8c4467a6bfc75826fee5
@@ -10,6 +10,18 @@ module Spidy::Connector
10
10
  autoload :Json
11
11
  autoload :Xml
12
12
 
13
+ #
14
+ # default user agent
15
+ #
16
+ USER_AGENT = [
17
+ 'Mozilla/5.0',
18
+ '(Macintosh; Intel Mac OS X 10_12_6)',
19
+ 'AppleWebKit/537.36',
20
+ '(KHTML, like Gecko)',
21
+ 'Chrome/64.0.3282.186',
22
+ 'Safari/537.36'
23
+ ].join(' ')
24
+
13
25
  module StaticAccessor
14
26
  extend ActiveSupport::Concern
15
27
  class_methods do
@@ -34,17 +46,31 @@ module Spidy::Connector
34
46
  end
35
47
  end
36
48
 
37
- #
38
- # default user agent
39
- #
40
- USER_AGENT = [
41
- 'Mozilla/5.0',
42
- '(Macintosh; Intel Mac OS X 10_12_6)',
43
- 'AppleWebKit/537.36',
44
- '(KHTML, like Gecko)',
45
- 'Chrome/64.0.3282.186',
46
- 'Safari/537.36'
47
- ].join(' ')
49
+ class Builder
50
+ attr_reader :origin_connector, :proxy_connector
51
+
52
+ def initialize(connector, socks_proxy)
53
+ @socks_proxy = socks_proxy
54
+ @origin_connector = connector
55
+ @proxy_connector =
56
+ lambda do |url, &block|
57
+ Socksify::proxy(socks_proxy[:host], socks_proxy[:port]) do
58
+ connector.call(url, &block)
59
+ end
60
+ end
61
+ end
62
+
63
+ def proxy_disabled?
64
+ !tor?
65
+ end
66
+
67
+ def tor?
68
+ Tor::Controller.new(host: @socks_proxy[:host], port: @socks_proxy[:port]).close
69
+ true
70
+ rescue Errno::ECONNREFUSED
71
+ false
72
+ end
73
+ end
48
74
 
49
75
  #
50
76
  # get connection handller
@@ -52,13 +78,9 @@ module Spidy::Connector
52
78
  def self.get(value, wait_time: nil, user_agent: nil, socks_proxy: nil)
53
79
  return value if value.respond_to?(:call)
54
80
 
55
- connector = const_get(value.to_s.classify).new(wait_time: wait_time || 5, user_agent: user_agent || USER_AGENT)
56
- return connector if socks_proxy.nil?
81
+ builder = Builder.new(const_get(value.to_s.classify).new(wait_time: wait_time || 5, user_agent: user_agent || USER_AGENT), socks_proxy)
82
+ return builder.origin_connector if socks_proxy.nil? || builder.proxy_disabled?
57
83
 
58
- lambda do |url, &block|
59
- Socksify::proxy(socks_proxy[:host], socks_proxy[:port]) do
60
- connector.call(url, &block)
61
- end
62
- end
84
+ builder.proxy_connector
63
85
  end
64
86
  end
@@ -28,10 +28,6 @@ module Spidy::Definition
28
28
  @socks_proxy = { host: host, port: port }
29
29
  end
30
30
 
31
- def tor?
32
- Tor.running?
33
- end
34
-
35
31
  def each(source = nil, name: :default, &yielder)
36
32
  name = name.presence || :default
37
33
  spidy = @namespace[:"#{name}_spider"]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spidy
4
- VERSION = '0.2.7'
4
+ VERSION = '0.2.8'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spidy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - aileron
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-01 00:00:00.000000000 Z
11
+ date: 2020-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler