spidy 0.2.7 → 0.2.8

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
  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