aranha 0.17.0 → 0.18.0

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: 31001c1c5af252c6cb791aa0a362177859b9f8ff647fe3150df6f6515d81904a
4
- data.tar.gz: eb574bcb2047e5cf2de295ea437d9e70d5cb680f6341e853da7097b7b2e181b8
3
+ metadata.gz: aaf36e792490fa400227bba2f46b8653e7c5f832e3ddfa8e3369a0d66efdbf6c
4
+ data.tar.gz: e7f52f89ba5bb1e60dbb3404b108cfa16e7db45d2124d9b803967018cd7bd665
5
5
  SHA512:
6
- metadata.gz: d9ec9528940576d0502b37ead25eb749118211ca5d15cf3d17cb23273d789309c7507e2f74d8053e17c5709766c0b87dabe6d64180df4a43ce060470f556029d
7
- data.tar.gz: d5ec7d1b7432ecbfbc8e10864214aee4ce9b256b5e359b3ac11f4411b2279e44b20369c17c67cdc08fe9fda52225a1a408ec4977adc0825cdd28da5bcda8ed26
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.0'
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.0
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-05-20 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
@@ -16,62 +16,74 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.4'
19
+ version: '0.14'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.14.3
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '0.4'
29
+ version: '0.14'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.14.3
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: aranha-selenium
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: '0.1'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 0.1.2
39
+ version: '0.5'
37
40
  type: :runtime
38
41
  prerelease: false
39
42
  version_requirements: !ruby/object:Gem::Requirement
40
43
  requirements:
41
44
  - - "~>"
42
45
  - !ruby/object:Gem::Version
43
- version: '0.1'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.1.2
46
+ version: '0.5'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: eac_ruby_utils
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.72'
53
+ version: '0.106'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.106.1
54
57
  type: :runtime
55
58
  prerelease: false
56
59
  version_requirements: !ruby/object:Gem::Requirement
57
60
  requirements:
58
61
  - - "~>"
59
62
  - !ruby/object:Gem::Version
60
- version: '0.72'
63
+ version: '0.106'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 0.106.1
61
67
  - !ruby/object:Gem::Dependency
62
68
  name: httpclient
63
69
  requirement: !ruby/object:Gem::Requirement
64
70
  requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '2.8'
65
74
  - - ">="
66
75
  - !ruby/object:Gem::Version
67
- version: '2.6'
76
+ version: 2.8.3
68
77
  type: :runtime
69
78
  prerelease: false
70
79
  version_requirements: !ruby/object:Gem::Requirement
71
80
  requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '2.8'
72
84
  - - ">="
73
85
  - !ruby/object:Gem::Version
74
- version: '2.6'
86
+ version: 2.8.3
75
87
  - !ruby/object:Gem::Dependency
76
88
  name: eac_ruby_gem_support
77
89
  requirement: !ruby/object:Gem::Requirement
@@ -106,6 +118,8 @@ files:
106
118
  - lib/aranha/default_processor.rb
107
119
  - lib/aranha/manager.rb
108
120
  - lib/aranha/processor.rb
121
+ - lib/aranha/temporary_errors.rb
122
+ - lib/aranha/temporary_errors_manager.rb
109
123
  - lib/aranha/version.rb
110
124
  homepage:
111
125
  licenses: