aranha 0.17.1 → 0.19.0

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: 10b997e33b88e96bc1258f35422e22db81238dd8e1178ae467446ba9d80bb9ee
4
- data.tar.gz: 5d1ac5a3dd8a6e3cc59f23d4be20c684d3745707fd17b978a27a83dd8cfdd71a
3
+ metadata.gz: cf8331e8cbae8db88c762687752ba56406c3d532ee13ed5d5f945e5dddd03949
4
+ data.tar.gz: 41e61bebf9fe22ac5ba864cc157a60e5778abd273666bee9afc4c0de36b1d2d5
5
5
  SHA512:
6
- metadata.gz: 7bad464d81803aec5e4807992a94e1bfa580e6f83f830db9dbe8889e3ffaee3a44fdcb20204eed24251fb2e5a2417d4894e86766d9fedd24b7fe603ffc0c52e5
7
- data.tar.gz: 1f586bbda238c3cf3f2859b2dffeb2285928a8f6853eb37d1651659373017dd7772ff472250e0d0f84188584e3b0e479d606108fe1a0a136caf19b9cbcd03cf6
6
+ metadata.gz: fddcd00139b6945a7bb9171a91fca2e48aaa66922cdb48d950d68f877523dd5080d314f2a98fb4a52b55eecb2d949daa7f6a30f71dd745dd0721d06b5febd2bf
7
+ data.tar.gz: 3dfafd6d2471d9f9472995be2c5708273935d75ae0dc777c6ebd3068f3b01da9f2f700756824eb9f9cdff3db966f37f32e2d3d7c0b665290746242ef4b28a78e
@@ -1,30 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'aranha/temporary_errors_manager'
4
5
 
5
6
  module Aranha
6
7
  class AddressProcessor
7
- ARANHA_EXCEPTIONS = [::Aranha::Parsers::InvalidStateException].freeze
8
- CORE_EXCEPTIONS = [::SocketError].freeze
9
- ERRNO_EXCEPTIONS = [Errno::ECONNREFUSED, ::Errno::ECONNRESET].freeze
10
- HTTPCLIENT_EXCEPTIONS = [
11
- ::HTTPClient::BadResponseError,
12
- ::HTTPClient::ConnectTimeoutError,
13
- ::HTTPClient::ReceiveTimeoutError
14
- ].freeze
15
- NET_EXCEPTIONS = [::Net::HTTPFatalError, ::Net::HTTPServerException, ::Net::OpenTimeout].freeze
16
-
17
- NETWORK_EXCEPTIONS = ARANHA_EXCEPTIONS + CORE_EXCEPTIONS + ERRNO_EXCEPTIONS +
18
- HTTPCLIENT_EXCEPTIONS + NET_EXCEPTIONS
19
-
20
- class << self
21
- def rescuable_error?(error)
22
- return true if NETWORK_EXCEPTIONS.any? { |klass| error.is_a?(klass) }
23
-
24
- error.cause.present? ? network_error?(error.cause) : false
25
- end
26
- end
27
-
28
8
  enable_simple_cache
29
9
  common_constructor :address
30
10
 
@@ -33,7 +13,7 @@ module Aranha
33
13
  end
34
14
 
35
15
  def rescuable_error?
36
- self.class.rescuable_error?(error)
16
+ ::Aranha::TemporaryErrorsManager.temporary_error?(error)
37
17
  end
38
18
 
39
19
  private
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/invalid_state_exception'
4
+ require 'aranha/parsers/source_address/fetch_content_error'
5
+ require 'eac_ruby_utils/core_ext'
6
+ require 'selenium-webdriver'
7
+
8
+ module Aranha
9
+ module TemporaryErrors
10
+ ARANHA_ERRORS = [::Aranha::Parsers::InvalidStateException,
11
+ ::Aranha::Parsers::SourceAddress::FetchContentError].freeze
12
+ CORE_ERRORS = [::SocketError].freeze
13
+ ERRNO_ERRORS = [Errno::ECONNREFUSED, ::Errno::ECONNRESET].freeze
14
+ NET_ERRORS = [::Net::HTTPFatalError, ::Net::HTTPServerException, ::Net::OpenTimeout].freeze
15
+ SELENIUM_ERRORS = [::Selenium::WebDriver::Error::TimeoutError].freeze
16
+
17
+ ALL_ERRORS = ARANHA_ERRORS + CORE_ERRORS + ERRNO_ERRORS + NET_ERRORS + SELENIUM_ERRORS
18
+
19
+ class << self
20
+ def errors
21
+ ALL_ERRORS
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/gems_registry'
5
+
6
+ module Aranha
7
+ module TemporaryErrorsManager
8
+ GEMS_REGISTRY_MODULE_SUFFIX = 'TemporaryErrors'
9
+
10
+ class << self
11
+ enable_simple_cache
12
+
13
+ # @return [Exception]
14
+ def errors
15
+ errors_providers.flat_map(&:errors)
16
+ end
17
+
18
+ # @return [Array]
19
+ def errors_providers
20
+ gems_registry.registered.map(&:registered_module)
21
+ end
22
+
23
+ # @param error Exception
24
+ # @return [Boolean]
25
+ def temporary_error?(error)
26
+ return true if errors.any? { |klass| error.is_a?(klass) }
27
+
28
+ error.cause.present? ? temporary_error?(error.cause) : false
29
+ end
30
+
31
+ private
32
+
33
+ # @return [EacRubyUtils::GemsRegistry]
34
+ def gems_registry_uncached
35
+ ::EacRubyUtils::GemsRegistry.new(GEMS_REGISTRY_MODULE_SUFFIX)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aranha
4
- VERSION = '0.17.1'
4
+ VERSION = '0.19.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aranha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-28 00:00:00.000000000 Z
11
+ date: 2023-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -16,74 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.14'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 0.14.3
19
+ version: '0.15'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0.14'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 0.14.3
26
+ version: '0.15'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: aranha-selenium
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
- version: '0.4'
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 0.4.2
33
+ version: '0.5'
43
34
  type: :runtime
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
46
37
  requirements:
47
38
  - - "~>"
48
39
  - !ruby/object:Gem::Version
49
- version: '0.4'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 0.4.2
40
+ version: '0.5'
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: eac_ruby_utils
55
43
  requirement: !ruby/object:Gem::Requirement
56
44
  requirements:
57
45
  - - "~>"
58
46
  - !ruby/object:Gem::Version
59
- version: '0.104'
47
+ version: '0.112'
60
48
  type: :runtime
61
49
  prerelease: false
62
50
  version_requirements: !ruby/object:Gem::Requirement
63
51
  requirements:
64
52
  - - "~>"
65
53
  - !ruby/object:Gem::Version
66
- version: '0.104'
67
- - !ruby/object:Gem::Dependency
68
- name: httpclient
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '2.8'
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: 2.8.3
77
- type: :runtime
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '2.8'
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: 2.8.3
54
+ version: '0.112'
87
55
  - !ruby/object:Gem::Dependency
88
56
  name: eac_ruby_gem_support
89
57
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +86,8 @@ files:
118
86
  - lib/aranha/default_processor.rb
119
87
  - lib/aranha/manager.rb
120
88
  - lib/aranha/processor.rb
89
+ - lib/aranha/temporary_errors.rb
90
+ - lib/aranha/temporary_errors_manager.rb
121
91
  - lib/aranha/version.rb
122
92
  homepage:
123
93
  licenses: