aranha 0.17.1 → 0.19.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: 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: