aranha 0.17.1 → 0.18.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: aaf36e792490fa400227bba2f46b8653e7c5f832e3ddfa8e3369a0d66efdbf6c
4
+ data.tar.gz: e7f52f89ba5bb1e60dbb3404b108cfa16e7db45d2124d9b803967018cd7bd665
5
5
  SHA512:
6
- metadata.gz: 7bad464d81803aec5e4807992a94e1bfa580e6f83f830db9dbe8889e3ffaee3a44fdcb20204eed24251fb2e5a2417d4894e86766d9fedd24b7fe603ffc0c52e5
7
- data.tar.gz: 1f586bbda238c3cf3f2859b2dffeb2285928a8f6853eb37d1651659373017dd7772ff472250e0d0f84188584e3b0e479d606108fe1a0a136caf19b9cbcd03cf6
6
+ metadata.gz: 9139a3fa904e1b4853e230c4b2fd4c21e7893603862966ba3936b002c8c40e3df82b81d67d51656897dfbf67247949ccb5f480b5cbcd1bde3ae1d03dc0825b71
7
+ data.tar.gz: 60c6ca44c1a229458eefc1e21c29cd6d5be49ce9eba3af78d0058f6cb21d6f4e47065aa24b65b853e40f4c14b04dcca0a00c1a911a6ac16166bb57b8e94b2c03
@@ -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,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/invalid_state_exception'
4
+ require 'aranha/parsers/source_address/fetch_content_error'
5
+ require 'httpclient'
6
+ require 'eac_ruby_utils/core_ext'
7
+ require 'selenium-webdriver'
8
+
9
+ module Aranha
10
+ module TemporaryErrors
11
+ ARANHA_ERRORS = [::Aranha::Parsers::InvalidStateException,
12
+ ::Aranha::Parsers::SourceAddress::FetchContentError].freeze
13
+ CORE_ERRORS = [::SocketError].freeze
14
+ ERRNO_ERRORS = [Errno::ECONNREFUSED, ::Errno::ECONNRESET].freeze
15
+ HTTPCLIENT_ERRORS = [
16
+ ::HTTPClient::BadResponseError,
17
+ ::HTTPClient::ConnectTimeoutError,
18
+ ::HTTPClient::ReceiveTimeoutError
19
+ ].freeze
20
+ NET_ERRORS = [::Net::HTTPFatalError, ::Net::HTTPServerException, ::Net::OpenTimeout].freeze
21
+ SELENIUM_ERRORS = [::Selenium::WebDriver::Error::TimeoutError].freeze
22
+
23
+ ALL_ERRORS = ARANHA_ERRORS + CORE_ERRORS + ERRNO_ERRORS +
24
+ HTTPCLIENT_ERRORS + NET_ERRORS + SELENIUM_ERRORS
25
+
26
+ class << self
27
+ def errors
28
+ ALL_ERRORS
29
+ end
30
+ end
31
+ end
32
+ 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.18.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.18.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: 2022-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -36,34 +36,34 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.4'
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 0.4.2
39
+ version: '0.5'
43
40
  type: :runtime
44
41
  prerelease: false
45
42
  version_requirements: !ruby/object:Gem::Requirement
46
43
  requirements:
47
44
  - - "~>"
48
45
  - !ruby/object:Gem::Version
49
- version: '0.4'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 0.4.2
46
+ version: '0.5'
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: eac_ruby_utils
55
49
  requirement: !ruby/object:Gem::Requirement
56
50
  requirements:
57
51
  - - "~>"
58
52
  - !ruby/object:Gem::Version
59
- version: '0.104'
53
+ version: '0.106'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.106.1
60
57
  type: :runtime
61
58
  prerelease: false
62
59
  version_requirements: !ruby/object:Gem::Requirement
63
60
  requirements:
64
61
  - - "~>"
65
62
  - !ruby/object:Gem::Version
66
- version: '0.104'
63
+ version: '0.106'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 0.106.1
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: httpclient
69
69
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +118,8 @@ files:
118
118
  - lib/aranha/default_processor.rb
119
119
  - lib/aranha/manager.rb
120
120
  - lib/aranha/processor.rb
121
+ - lib/aranha/temporary_errors.rb
122
+ - lib/aranha/temporary_errors_manager.rb
121
123
  - lib/aranha/version.rb
122
124
  homepage:
123
125
  licenses: