spidy 0.2.0 → 0.2.5

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: 2ba417984708d3441c47f69574850c379e4a26dbcf810734545449173e1b886b
4
- data.tar.gz: '0881f6202ffbcc8c1a7e153e79b16d7dec68694dbb915430cc3c0a8912e29817'
3
+ metadata.gz: f123b0f2bb611ea41bafe6a9cb5a7bb7564ba6be7044127e77fddf34dc3faed1
4
+ data.tar.gz: 87f0079575c62dac9a43d6900b88da45cce77a37f5b994376b0d31dd24b03fa5
5
5
  SHA512:
6
- metadata.gz: 18ce16b8d0d5d3b536ccba74c842063c7c86d96fa9455010e58c78de20ed37e92051909a6054b77e7022c2c3072f9402fc246daf530c00287e22adbde2d598cf
7
- data.tar.gz: e15ee2bec15d64dce143bad5eb0e59f177e32f4aeafed1626a288eaff690c028de7446e40a88bd16696b381ca08e912c959f5597eea11aeede78677ef3c9ed9e
6
+ metadata.gz: b6554befde64315d01d2db11ba22b479629ae602ca4acddee51c941bd091144849ad15f2b98c220d29bd97c70c02fc2726061db429db2140a50bbfe0fce850a2
7
+ data.tar.gz: 511b7dccf5f93e4cf8a652d3039ec852c556cbd49e238c676029d1b0e611dce669ac84140c8b9be3f861426e8f248f6452698bf7319f5493cb7ecccb3cd1428d
@@ -1 +1 @@
1
- 2.6.5
1
+ 2.6.6
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- spidy (0.1.6)
4
+ spidy (0.2.3)
5
5
  activesupport
6
6
  mechanize
7
7
  pry
@@ -9,22 +9,22 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (6.0.2.1)
12
+ activesupport (6.0.3.2)
13
13
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
14
  i18n (>= 0.7, < 2)
15
15
  minitest (~> 5.1)
16
16
  tzinfo (~> 1.1)
17
- zeitwerk (~> 2.2)
17
+ zeitwerk (~> 2.2, >= 2.2.2)
18
18
  coderay (1.1.2)
19
- concurrent-ruby (1.1.5)
20
- connection_pool (2.2.2)
19
+ concurrent-ruby (1.1.6)
20
+ connection_pool (2.2.3)
21
21
  diff-lcs (1.3)
22
22
  domain_name (0.5.20190701)
23
23
  unf (>= 0.0.5, < 1.0.0)
24
24
  ffaker (2.10.0)
25
25
  http-cookie (1.0.3)
26
26
  domain_name (~> 0.5)
27
- i18n (1.8.2)
27
+ i18n (1.8.5)
28
28
  concurrent-ruby (~> 1.0)
29
29
  mechanize (2.7.6)
30
30
  domain_name (~> 0.5, >= 0.5.1)
@@ -38,14 +38,14 @@ GEM
38
38
  method_source (0.9.2)
39
39
  mime-types (3.3.1)
40
40
  mime-types-data (~> 3.2015)
41
- mime-types-data (3.2019.1009)
41
+ mime-types-data (3.2020.0512)
42
42
  mini_portile2 (2.4.0)
43
- minitest (5.14.0)
43
+ minitest (5.14.1)
44
44
  mixlib-shellout (2.4.4)
45
45
  net-http-digest_auth (1.4.1)
46
- net-http-persistent (3.1.0)
46
+ net-http-persistent (4.0.0)
47
47
  connection_pool (~> 2.2)
48
- nokogiri (1.10.7)
48
+ nokogiri (1.10.10)
49
49
  mini_portile2 (~> 2.4.0)
50
50
  ntlm-http (0.1.1)
51
51
  pry (0.12.2)
@@ -73,13 +73,13 @@ GEM
73
73
  rspec-support (~> 3.8.0)
74
74
  rspec-support (3.8.2)
75
75
  thread_safe (0.3.6)
76
- tzinfo (1.2.6)
76
+ tzinfo (1.2.7)
77
77
  thread_safe (~> 0.1)
78
78
  unf (0.1.4)
79
79
  unf_ext
80
- unf_ext (0.0.7.6)
80
+ unf_ext (0.0.7.7)
81
81
  webrobots (0.1.2)
82
- zeitwerk (2.2.2)
82
+ zeitwerk (2.4.0)
83
83
 
84
84
  PLATFORMS
85
85
  ruby
@@ -94,4 +94,4 @@ DEPENDENCIES
94
94
  spidy!
95
95
 
96
96
  BUNDLED WITH
97
- 2.1.2
97
+ 2.1.4
data/README.md CHANGED
@@ -60,7 +60,7 @@ call('http://example.com') { |html| break html } # html as nokogiri object ( mec
60
60
  ```
61
61
 
62
62
  ### When used from the ruby code
63
- ``
63
+ ```rb
64
64
  a = Spidy.define do
65
65
  # Implementing spiders and scrapers
66
66
  end
@@ -4,13 +4,13 @@ require 'spidy/version'
4
4
  require 'active_support/all'
5
5
  require 'mechanize'
6
6
  require 'open-uri'
7
+ require 'socksify'
7
8
 
8
9
  #
9
10
  # web spider dsl engine
10
11
  #
11
12
  module Spidy
12
13
  extend ActiveSupport::Autoload
13
- autoload :Interface
14
14
  autoload :Shell
15
15
  autoload :CommandLine
16
16
  autoload :Console
@@ -34,6 +34,13 @@ module Spidy
34
34
  module_eval(&block)
35
35
  end
36
36
  end
37
- Spidy::Interface.new(spidy)
37
+ spidy.instance_eval do
38
+ undef :spider
39
+ undef :define
40
+ undef :wait_time
41
+ undef :user_agent
42
+ undef :socks_proxy
43
+ end
44
+ spidy
38
45
  end
39
46
  end
@@ -9,17 +9,44 @@ module Spidy::Binder
9
9
  autoload :Html
10
10
  autoload :Xml
11
11
 
12
+ class Error < StandardError
13
+ end
14
+
12
15
  class Caller
13
16
  def initialize(spidy, binder)
14
17
  @spidy = spidy
15
18
  @binder = binder
16
19
  end
17
20
 
18
- def call(source, url: nil, define: nil)
19
- yield Class.new(@binder, &define).new(@spidy, source, url)
21
+ def call(source, url: nil, define: nil, define_name: nil)
22
+ yield Class.new(@binder, &define).new(define_name, @spidy, source, url)
23
+ end
24
+ end
25
+
26
+ class Base
27
+ class << self
28
+ attr_reader :attribute_names
29
+ end
30
+
31
+ attr_reader :resource, :url
32
+
33
+ def initialize(define_name, spidy, resource, url)
34
+ @define_name = define_name
35
+ @spidy = spidy
36
+ @resource = resource
37
+ @url = url
38
+ end
39
+
40
+ def to_s
41
+ to_h.to_json
42
+ end
43
+
44
+ def to_h
45
+ self.class.attribute_names.map { |name| [name, send(name)] }.to_h
20
46
  end
21
47
  end
22
48
 
49
+
23
50
  def self.get(spidy, value)
24
51
  return Caller.new(spidy, const_get(value.to_s.classify)) if name.is_a?(String) || name.is_a?(Symbol)
25
52
 
@@ -3,42 +3,23 @@
3
3
  #
4
4
  # Bind html and convert to object
5
5
  #
6
- class Spidy::Binder::Html
7
- class << self
8
- attr_reader :attribute_names
6
+ class Spidy::Binder::Html < Spidy::Binder::Base
7
+ def self.let(name, query = nil, &block)
8
+ @attribute_names ||= []
9
+ @attribute_names << name
9
10
 
10
- def let(name, query = nil, &block)
11
- @attribute_names ||= []
12
- @attribute_names << name
13
- define_method(name) do
14
- return html.at(query)&.text if block.nil?
15
- return instance_exec(&block) if query.blank?
11
+ return define_method(name) { html.at(query)&.text } if block.nil?
16
12
 
13
+ define_method(name) do
14
+ if query.present?
17
15
  instance_exec(html.at(query), &block)
18
- rescue NoMethodError => e
19
- raise "#{html.uri} ##{name} => #{e.message}"
16
+ else
17
+ instance_exec(&block)
20
18
  end
19
+ rescue StandardError => e
20
+ fail Spidy::Binder::Error, "spidy(#{@define_name})##{name} => #{e.message}"
21
21
  end
22
22
  end
23
23
 
24
- attr_reader :html, :url
25
- alias_method :resource, :html
26
-
27
- def initialize(spidy, html, url)
28
- @spidy = spidy
29
- @url = url
30
- @html = html
31
- end
32
-
33
- def scraper(name, source)
34
- lambda { |&block| @spidy.call(source, name: name, &block) }
35
- end
36
-
37
- def to_s
38
- to_h.to_json
39
- end
40
-
41
- def to_h
42
- self.class.attribute_names.map { |name| [name, send(name)] }.to_h
43
- end
24
+ alias_method :html, :resource
44
25
  end
@@ -3,40 +3,23 @@
3
3
  #
4
4
  # Bind json and convert to object
5
5
  #
6
- class Spidy::Binder::Json
7
- class << self
8
- attr_reader :attribute_names
9
-
10
- def let(name, *query, &block)
11
- @attribute_names ||= []
12
- @attribute_names << name
13
- define_method(name) do
14
- result = json.dig(*query) if query.present?
15
- return result if block.nil?
16
-
17
- instance_exec(result, &block)
6
+ class Spidy::Binder::Json < Spidy::Binder::Base
7
+ def self.let(name, *query, &block)
8
+ @attribute_names ||= []
9
+ @attribute_names << name
10
+
11
+ return define_method(name) { json.dig(*query) } if block.nil?
12
+
13
+ define_method(name) do
14
+ if query.present?
15
+ instance_exec(json.dig(*query), &block)
16
+ else
17
+ instance_exec(&block)
18
18
  end
19
+ rescue StandardError => e
20
+ fail Spidy::Binder::Error, "spidy(#{@define_name})##{name} => #{e.message}"
19
21
  end
20
22
  end
21
23
 
22
- attr_reader :json, :url
23
- alias_method :resource, :json
24
-
25
- def initialize(spidy, json, url)
26
- @spidy = spidy
27
- @json = json
28
- @url = url
29
- end
30
-
31
- def scraper(name, source)
32
- lambda { |&block| @spidy.call(source, name: name, &block) }
33
- end
34
-
35
- def to_s
36
- to_h.to_json
37
- end
38
-
39
- def to_h
40
- self.class.attribute_names.map { |name| [name, send(name)] }.to_h
41
- end
24
+ alias_method :json, :resource
42
25
  end
@@ -3,42 +3,23 @@
3
3
  #
4
4
  # Bind xml and convert to object
5
5
  #
6
- class Spidy::Binder::Xml
7
- class << self
8
- attr_reader :attribute_names
6
+ class Spidy::Binder::Xml < Spidy::Binder::Base
7
+ def self.let(name, query = nil, &block)
8
+ @attribute_names ||= []
9
+ @attribute_names << name
9
10
 
10
- def let(name, query = nil, &block)
11
- @attribute_names ||= []
12
- @attribute_names << name
13
- define_method(name) do
14
- return xml.at(query)&.text if block.nil?
15
- return instance_exec(&block) if query.blank?
11
+ return define_method(name) { xml.at(query)&.text } if block.nil?
16
12
 
13
+ define_method(name) do
14
+ if query.present?
17
15
  instance_exec(xml.at(query), &block)
18
- rescue NoMethodError => e
19
- raise "#{xml} ##{name} => #{e.message}"
16
+ else
17
+ instance_exec(&block)
20
18
  end
19
+ rescue StandardError => e
20
+ fail Spidy::Binder::Error, "spidy(#{@define_name})##{name} => #{e.message}"
21
21
  end
22
22
  end
23
23
 
24
- attr_reader :xml, :url
25
- alias_method :resource, :xml
26
-
27
- def initialize(spidy, xml, url)
28
- @spidy = spidy
29
- @xml = xml
30
- @url = url
31
- end
32
-
33
- def scraper(name, source)
34
- lambda { |&block| @spidy.call(source, name: name, &block) }
35
- end
36
-
37
- def to_s
38
- to_h.to_json
39
- end
40
-
41
- def to_h
42
- self.class.attribute_names.map { |name| [name, send(name)] }.to_h
43
- end
24
+ alias_method :xml, :resource
44
25
  end
@@ -10,6 +10,24 @@ module Spidy::Connector
10
10
  autoload :Json
11
11
  autoload :Xml
12
12
 
13
+ #
14
+ # retry class
15
+ #
16
+ class Retry < StandardError
17
+ attr_reader :page
18
+ attr_reader :response_code
19
+ attr_reader :wait_time
20
+
21
+ def initialize(wait_time: 2, page: nil, error: nil)
22
+ @page = page
23
+ @wait_time = wait_time
24
+ @response_code = error.try(:response_code) || page.try(:response_code)
25
+ end
26
+ end
27
+
28
+ #
29
+ # default user agent
30
+ #
13
31
  USER_AGENT = [
14
32
  'Mozilla/5.0',
15
33
  '(Macintosh; Intel Mac OS X 10_12_6)',
@@ -19,9 +37,19 @@ module Spidy::Connector
19
37
  'Safari/537.36'
20
38
  ].join(' ')
21
39
 
22
- def self.get(value)
23
- return const_get(value.to_s.classify) if value.is_a?(String) || value.is_a?(Symbol)
40
+ #
41
+ # get connection handller
42
+ #
43
+ def self.get(value, wait_time: nil, user_agent: nil, socks_proxy: nil)
44
+ return value if value.respond_to?(:call)
45
+
46
+ connector = const_get(value.to_s.classify).new(wait_time: wait_time || 5, user_agent: user_agent || USER_AGENT)
47
+ return connector if socks_proxy.nil?
24
48
 
25
- value
49
+ lambda do |url, &block|
50
+ Socksify::proxy(socks_proxy[:host], socks_proxy[:port]) do
51
+ connector.call(url, &block)
52
+ end
53
+ end
26
54
  end
27
55
  end
@@ -3,8 +3,11 @@
3
3
  #
4
4
  # Direct resource ( not network resource )
5
5
  #
6
- module Spidy::Connector::Direct
7
- def self.call(resource, &yielder)
6
+ class Spidy::Connector::Direct
7
+ def call(resource, &yielder)
8
8
  yielder.call(resource)
9
9
  end
10
+
11
+ def initialize(wait_time: nil, user_agent: nil)
12
+ end
10
13
  end
@@ -3,73 +3,60 @@
3
3
  #
4
4
  # Mechanize wrapper
5
5
  #
6
- module Spidy::Connector::Html
7
- #
8
- # retry class
9
- #
10
- class Retry < StandardError
11
- attr_reader :page
12
- attr_reader :response_code
13
- attr_reader :wait_time
14
-
15
- def initialize(wait_time: 2, page: nil, error: nil)
16
- @page = page
17
- @wait_time = wait_time
18
- @response_code = error.try(:response_code) || page.try(:response_code)
19
- end
6
+ class Spidy::Connector::Html
7
+ def initialize(wait_time:, user_agent:, logger: nil)
8
+ @wait_time = wait_time
9
+ @logger = logger || proc { |values| STDERR.puts(values.to_json) }
10
+ @agent = Mechanize.new
11
+ @user_agent = user_agent
12
+ @agent.user_agent = user_agent
20
13
  end
21
14
 
22
- @logger = proc { |values| STDERR.puts(values.to_json) }
23
- @agent = Mechanize.new
24
- @agent.user_agent = Spidy::Connector::USER_AGENT
25
-
26
- class << self
27
- attr_reader :agent
28
- attr_accessor :logger
15
+ attr_reader :agent
16
+ attr_reader :logger
29
17
 
30
- def call(url, encoding: nil, retry_count: 5, &yielder)
31
- fail 'url is not specified' if url.blank?
32
- if encoding
33
- agent.default_encoding = encoding
34
- agent.force_default_encoding = true
35
- end
36
- logger.call('connnector.get': url, 'connnector.accessed': Time.current)
37
- get(url, retry_count, yielder)
18
+ def call(url, encoding: nil, retry_count: 5, &yielder)
19
+ fail 'url is not specified' if url.blank?
20
+ if encoding
21
+ agent.default_encoding = encoding
22
+ agent.force_default_encoding = true
38
23
  end
24
+ logger.call('connnector.get': url, 'connnector.accessed': Time.current)
25
+ get(url, retry_count, yielder)
26
+ end
39
27
 
40
- private
28
+ private
41
29
 
42
- def get(url, retry_count, yielder)
43
- connect(url, retry_count, yielder)
44
- rescue Retry => e
45
- logger.call('retry.accessed': Time.current,
46
- 'retry.uri': url,
47
- 'retry.response_code': e.response_code,
48
- 'retry.rest_count': retry_count)
30
+ def get(url, retry_count, yielder)
31
+ connect(url, retry_count, yielder)
32
+ rescue Spidy::Connector::Retry => e
33
+ logger.call('retry.accessed': Time.current,
34
+ 'retry.uri': url,
35
+ 'retry.response_code': e.response_code,
36
+ 'retry.rest_count': retry_count)
49
37
 
50
- @agent = Mechanize.new
51
- @agent.user_agent = Spidy::Connector::USER_AGENT
38
+ @agent = Mechanize.new
39
+ @agent.user_agent = @user_agent
52
40
 
53
- retry_count -= 1
54
- if retry_count.positive?
55
- sleep e.wait_time
56
- retry
57
- end
58
- raise e
41
+ retry_count -= 1
42
+ if retry_count.positive?
43
+ sleep e.wait_time
44
+ retry
59
45
  end
46
+ raise e
47
+ end
60
48
 
61
- def connect(url, retry_count, yielder)
62
- result = nil
63
- agent.get(url) do |page|
64
- fail Retry, page: page, wait_time: 5 if page.title == 'Sorry, unable to access page...'
49
+ def connect(url, retry_count, yielder)
50
+ result = nil
51
+ agent.get(url) do |page|
52
+ fail Spidy::Connector::Retry, page: page, wait_time: @wait_time if page.title == 'Sorry, unable to access page...'
65
53
 
66
- result = yielder.call(page)
67
- end
68
- result
69
- rescue Mechanize::ResponseCodeError => e
70
- raise Retry, error: e if e.response_code == '429'
71
- raise e
54
+ result = yielder.call(page)
72
55
  end
73
-
56
+ result
57
+ rescue Mechanize::ResponseCodeError => e
58
+ raise Spidy::Connector::Retry, error: e, wait_time: @wait_time if e.response_code == '429'
59
+ raise Spidy::Connector::Retry, error: e, wait_time: @wait_time if e.response_code == '502'
60
+ raise e
74
61
  end
75
62
  end
@@ -3,9 +3,17 @@
3
3
  #
4
4
  # OpenURI to JSON.parse
5
5
  #
6
- module Spidy::Connector::Json
7
- def self.call(url)
6
+ class Spidy::Connector::Json
7
+ def initialize(wait_time: nil, user_agent: nil)
8
+ @user_agent = user_agent
9
+ end
10
+
11
+ def call(url, &block)
8
12
  fail 'url is not specified' if url.blank?
9
- OpenURI.open_uri(url, "User-Agent" => Spidy::Connector::USER_AGENT) { |body| yield JSON.parse(body.read, symbolize_names: true) }
13
+ connect(url, &block)
14
+ end
15
+
16
+ def connect(url)
17
+ OpenURI.open_uri(url, "User-Agent" => @user_agent) { |body| yield JSON.parse(body.read, symbolize_names: true) }
10
18
  end
11
19
  end
@@ -3,12 +3,16 @@
3
3
  #
4
4
  # xml
5
5
  #
6
- module Spidy::Connector::Xml
7
- def self.call(url)
6
+ class Spidy::Connector::Xml
7
+ def call(url)
8
8
  fail 'URL is undefined' if url.blank?
9
9
 
10
- OpenURI.open_uri(url, "User-Agent" => Spidy::Connector::USER_AGENT) do |body|
10
+ OpenURI.open_uri(url, "User-Agent" => @user_agent) do |body|
11
11
  yield Nokogiri::XML(body.read.gsub(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/, ''), url)
12
12
  end
13
13
  end
14
+
15
+ def initialize(wait_time: nil, user_agent: nil)
16
+ @user_agent = user_agent
17
+ end
14
18
  end
@@ -18,4 +18,9 @@ class Spidy::Console
18
18
  def reload!
19
19
  @definition_file.eval_definition
20
20
  end
21
+
22
+ def connector(url, as:)
23
+ connector = Spidy::Connector.get(as)
24
+ connector.call(url) { |page| break page }
25
+ end
21
26
  end
@@ -16,6 +16,18 @@ module Spidy::Definition
16
16
  spidy.call(source, &yielder)
17
17
  end
18
18
 
19
+ def user_agent(user_agent)
20
+ @user_agent = user_agent
21
+ end
22
+
23
+ def wait_time(wait_time)
24
+ @wait_time = wait_time
25
+ end
26
+
27
+ def socks_proxy(host, port)
28
+ @socks_proxy = { host: host, port: port }
29
+ end
30
+
19
31
  def each(source = nil, name: :default, &yielder)
20
32
  name = name.presence || :default
21
33
  spidy = @namespace[:"#{name}_spider"]
@@ -26,7 +38,7 @@ module Spidy::Definition
26
38
 
27
39
  def spider(name = :default, connector: nil, as: nil, &define_block)
28
40
  @namespace ||= {}
29
- connector = Spidy::Connector.get(connector || as)
41
+ connector = Spidy::Connector.get(connector || as, wait_time: @wait_time, user_agent: @user_agent, socks_proxy: @socks_proxy)
30
42
  @namespace[:"#{name}_spider"] = proc do |source, &yielder|
31
43
  define_block.call(yielder, connector, source)
32
44
  end
@@ -34,19 +46,18 @@ module Spidy::Definition
34
46
 
35
47
  def define(name = :default, connector: nil, binder: nil, as: nil, &define_block)
36
48
  @namespace ||= {}
37
- connector = Spidy::Connector.get(connector || as)
49
+ connector = Spidy::Connector.get(connector || as, wait_time: @wait_time, user_agent: @user_agent)
38
50
  binder = Spidy::Binder.get(self, binder || as)
39
- @namespace[:"#{name}_scraper"] = define_proc(connector, binder, define_block)
51
+ @namespace[:"#{name}_scraper"] = define_proc(name, connector, binder, define_block)
40
52
  end
41
53
 
42
54
  private
43
55
 
44
- def define_proc(connector, binder, define_block)
56
+ def define_proc(name, connector, binder, define_block)
45
57
  proc do |source, &yielder|
46
- fail 'block is not specified' if yielder.nil?
47
-
58
+ yielder = lambda { |result| break result } if yielder.nil?
48
59
  connection_yielder = lambda do |page|
49
- binder.call(page, url: source, define: define_block) { |object| yielder.call(object) }
60
+ binder.call(page, url: source, define: define_block, define_name: name) { |object| yielder.call(object) }
50
61
  end
51
62
  connector.call(source, &connection_yielder)
52
63
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spidy
4
- VERSION = '0.2.0'
4
+ VERSION = '0.2.5'
5
5
  end
@@ -33,5 +33,6 @@ Gem::Specification.new do |spec|
33
33
 
34
34
  spec.add_runtime_dependency 'activesupport'
35
35
  spec.add_runtime_dependency 'mechanize'
36
+ spec.add_runtime_dependency 'socksify'
36
37
  spec.add_runtime_dependency 'pry'
37
38
  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.0
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - aileron
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-10 00:00:00.000000000 Z
11
+ date: 2020-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: socksify
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: pry
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +150,7 @@ dependencies:
136
150
  - - ">="
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0'
139
- description:
153
+ description:
140
154
  email:
141
155
  - aileron.cc@gmail.com
142
156
  executables:
@@ -174,7 +188,6 @@ files:
174
188
  - lib/spidy/console.rb
175
189
  - lib/spidy/definition.rb
176
190
  - lib/spidy/definition_file.rb
177
- - lib/spidy/interface.rb
178
191
  - lib/spidy/shell.rb
179
192
  - lib/spidy/spider.rb
180
193
  - lib/spidy/version.rb
@@ -184,7 +197,7 @@ homepage: https://github.com/aileron-inc/spidy
184
197
  licenses:
185
198
  - MIT
186
199
  metadata: {}
187
- post_install_message:
200
+ post_install_message:
188
201
  rdoc_options: []
189
202
  require_paths:
190
203
  - lib
@@ -200,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
213
  version: '0'
201
214
  requirements: []
202
215
  rubygems_version: 3.0.3
203
- signing_key:
216
+ signing_key:
204
217
  specification_version: 4
205
218
  summary: web spider dsl
206
219
  test_files: []
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- #
4
- # spidy interface
5
- #
6
- class Spidy::Interface
7
- delegate :call, :each, :namespace, to: :@spidy
8
-
9
- def initialize(spidy)
10
- @spidy = spidy
11
- end
12
- end