html2rss 0.20.0 → 0.20.1
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 +4 -4
- data/lib/html2rss/config/class_methods.rb +9 -4
- data/lib/html2rss/config/validator.rb +1 -0
- data/lib/html2rss/config.rb +4 -1
- data/lib/html2rss/request_controls.rb +13 -3
- data/lib/html2rss/request_service/policy.rb +3 -3
- data/lib/html2rss/request_session/runtime_policy.rb +2 -1
- data/lib/html2rss/version.rb +1 -1
- data/schema/html2rss-config.schema.json +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3eb20836fb55a5e33d114634c7c20bf2a65afd1a923af1bba82896797fdb099d
|
|
4
|
+
data.tar.gz: 97c00923e0ca5744cf82f22d54aa428cc784cba3e259bbcdcd9252928f9bc3c0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 36431edafddcca32a53f562a75fbcd77fae969ca8c8fa7c2b6de77f121add2ee3c34c2b6e2e7b57109742780d62eeddde823b1a9bf8f4c1aaeed08a0ae4e5c90
|
|
7
|
+
data.tar.gz: d3eafa9cbbecc5ccaded7b21508e0af1c43337999cb5651f2d879df5217c1aa1f3e5484bcfd6354037d709715db1cc106f2946dd592745c0ac58252bcdd26ac8
|
|
@@ -132,10 +132,7 @@ module Html2rss
|
|
|
132
132
|
def default_config
|
|
133
133
|
{
|
|
134
134
|
strategy: default_strategy_name,
|
|
135
|
-
request:
|
|
136
|
-
max_redirects: RequestService::Policy::DEFAULTS[:max_redirects],
|
|
137
|
-
max_requests: RequestService::Policy::DEFAULTS[:max_requests]
|
|
138
|
-
},
|
|
135
|
+
request: default_request_config,
|
|
139
136
|
channel: { time_zone: 'UTC' },
|
|
140
137
|
headers: RequestHeaders.browser_defaults,
|
|
141
138
|
stylesheets: Html2rss.configuration.stylesheets || []
|
|
@@ -149,6 +146,14 @@ module Html2rss
|
|
|
149
146
|
|
|
150
147
|
private
|
|
151
148
|
|
|
149
|
+
def default_request_config
|
|
150
|
+
{
|
|
151
|
+
max_redirects: RequestService::Policy::DEFAULTS[:max_redirects],
|
|
152
|
+
max_requests: RequestService::Policy::DEFAULTS[:max_requests],
|
|
153
|
+
total_timeout_seconds: RequestService::Policy::DEFAULTS[:total_timeout_seconds]
|
|
154
|
+
}
|
|
155
|
+
end
|
|
156
|
+
|
|
152
157
|
def resolve_effective_config(config, params:)
|
|
153
158
|
effective_config = HashUtil.deep_symbolize_keys(config, context: 'config')
|
|
154
159
|
resolved_params = parameter_defaults(effective_config)
|
|
@@ -80,6 +80,7 @@ module Html2rss
|
|
|
80
80
|
RequestConfig = Dry::Schema.Params do
|
|
81
81
|
optional(:max_redirects).filled(:integer, gteq?: 0)
|
|
82
82
|
optional(:max_requests).filled(:integer, gt?: 0)
|
|
83
|
+
optional(:total_timeout_seconds).filled(:integer, gt?: 0)
|
|
83
84
|
optional(:browserless).hash(BrowserlessRequestConfig)
|
|
84
85
|
optional(:botasaurus).hash(BotasaurusRequestConfig)
|
|
85
86
|
end
|
data/lib/html2rss/config.rb
CHANGED
|
@@ -31,7 +31,8 @@ module Html2rss
|
|
|
31
31
|
@request_controls = request_controls.with_effective_values(
|
|
32
32
|
strategy: validated_config[:strategy],
|
|
33
33
|
max_redirects: validated_config.dig(:request, :max_redirects),
|
|
34
|
-
max_requests: validated_config.dig(:request, :max_requests)
|
|
34
|
+
max_requests: validated_config.dig(:request, :max_requests),
|
|
35
|
+
total_timeout_seconds: validated_config.dig(:request, :total_timeout_seconds)
|
|
35
36
|
)
|
|
36
37
|
end
|
|
37
38
|
|
|
@@ -41,6 +42,8 @@ module Html2rss
|
|
|
41
42
|
def max_redirects = request_controls.max_redirects
|
|
42
43
|
# @return [Integer, nil] configured request budget
|
|
43
44
|
def max_requests = request_controls.max_requests
|
|
45
|
+
# @return [Integer, nil] configured request timeout
|
|
46
|
+
def total_timeout_seconds = request_controls.total_timeout_seconds
|
|
44
47
|
# @return [Array<Hash>] stylesheet definitions
|
|
45
48
|
def stylesheets = config[:stylesheets]
|
|
46
49
|
|
|
@@ -7,7 +7,7 @@ module Html2rss
|
|
|
7
7
|
# Request-control keys accepted at the top level of feed config.
|
|
8
8
|
TOP_LEVEL_KEYS = %i[strategy].freeze
|
|
9
9
|
# Request-control keys accepted under the nested `request` config.
|
|
10
|
-
REQUEST_KEYS = %i[max_redirects max_requests].freeze
|
|
10
|
+
REQUEST_KEYS = %i[max_redirects max_requests total_timeout_seconds].freeze
|
|
11
11
|
|
|
12
12
|
##
|
|
13
13
|
# @param config [Hash{Symbol => Object}] raw config input
|
|
@@ -20,6 +20,7 @@ module Html2rss
|
|
|
20
20
|
strategy: config[:strategy],
|
|
21
21
|
max_redirects: request_value_for(config, :max_redirects),
|
|
22
22
|
max_requests: request_value_for(config, :max_requests),
|
|
23
|
+
total_timeout_seconds: request_value_for(config, :total_timeout_seconds),
|
|
23
24
|
explicit_keys: explicit_keys_for(config)
|
|
24
25
|
)
|
|
25
26
|
end
|
|
@@ -47,11 +48,13 @@ module Html2rss
|
|
|
47
48
|
# @param strategy [Symbol, nil] effective request strategy
|
|
48
49
|
# @param max_redirects [Integer, nil] effective redirect limit
|
|
49
50
|
# @param max_requests [Integer, nil] effective request budget
|
|
51
|
+
# @param total_timeout_seconds [Integer, nil] effective request timeout
|
|
50
52
|
# @param explicit_keys [Array<Symbol>] controls explicitly supplied by the caller
|
|
51
|
-
def initialize(strategy: nil, max_redirects: nil, max_requests: nil, explicit_keys: [])
|
|
53
|
+
def initialize(strategy: nil, max_redirects: nil, max_requests: nil, total_timeout_seconds: nil, explicit_keys: [])
|
|
52
54
|
@strategy = strategy
|
|
53
55
|
@max_redirects = max_redirects
|
|
54
56
|
@max_requests = max_requests
|
|
57
|
+
@total_timeout_seconds = total_timeout_seconds
|
|
55
58
|
@explicit_keys = explicit_keys.map(&:to_sym).uniq.freeze
|
|
56
59
|
freeze
|
|
57
60
|
end
|
|
@@ -68,6 +71,10 @@ module Html2rss
|
|
|
68
71
|
# @return [Integer, nil] effective request budget
|
|
69
72
|
attr_reader :max_requests
|
|
70
73
|
|
|
74
|
+
##
|
|
75
|
+
# @return [Integer, nil] effective request timeout
|
|
76
|
+
attr_reader :total_timeout_seconds
|
|
77
|
+
|
|
71
78
|
##
|
|
72
79
|
# @param name [Symbol, String] request control name
|
|
73
80
|
# @return [Boolean] whether the control was explicitly supplied
|
|
@@ -79,12 +86,14 @@ module Html2rss
|
|
|
79
86
|
# @param strategy [Symbol, nil] validated request strategy
|
|
80
87
|
# @param max_redirects [Integer, nil] validated redirect limit
|
|
81
88
|
# @param max_requests [Integer, nil] validated request budget
|
|
89
|
+
# @param total_timeout_seconds [Integer, nil] validated request timeout
|
|
82
90
|
# @return [RequestControls] controls updated with validated effective values
|
|
83
|
-
def with_effective_values(strategy:, max_redirects:, max_requests:)
|
|
91
|
+
def with_effective_values(strategy:, max_redirects:, max_requests:, total_timeout_seconds:)
|
|
84
92
|
self.class.new(
|
|
85
93
|
strategy:,
|
|
86
94
|
max_redirects:,
|
|
87
95
|
max_requests:,
|
|
96
|
+
total_timeout_seconds:,
|
|
88
97
|
explicit_keys:
|
|
89
98
|
)
|
|
90
99
|
end
|
|
@@ -98,6 +107,7 @@ module Html2rss
|
|
|
98
107
|
config[:strategy] = strategy if explicit?(:strategy)
|
|
99
108
|
apply_request_value(config, :max_redirects, max_redirects)
|
|
100
109
|
apply_request_value(config, :max_requests, max_requests)
|
|
110
|
+
apply_request_value(config, :total_timeout_seconds, total_timeout_seconds)
|
|
101
111
|
config
|
|
102
112
|
end
|
|
103
113
|
|
|
@@ -30,9 +30,9 @@ module Html2rss
|
|
|
30
30
|
|
|
31
31
|
# Default policy values used when request controls are not explicitly set.
|
|
32
32
|
DEFAULTS = {
|
|
33
|
-
connect_timeout_seconds: 5,
|
|
34
|
-
read_timeout_seconds: 10,
|
|
35
|
-
total_timeout_seconds: 30,
|
|
33
|
+
connect_timeout_seconds: Integer(ENV.fetch('HTML2RSS_CONNECT_TIMEOUT_SECONDS', 5)),
|
|
34
|
+
read_timeout_seconds: Integer(ENV.fetch('HTML2RSS_READ_TIMEOUT_SECONDS', 10)),
|
|
35
|
+
total_timeout_seconds: Integer(ENV.fetch('HTML2RSS_TOTAL_TIMEOUT_SECONDS', 30)),
|
|
36
36
|
max_redirects: 3,
|
|
37
37
|
max_response_bytes: 5_242_880,
|
|
38
38
|
max_decompressed_bytes: 10_485_760,
|
|
@@ -11,7 +11,8 @@ module Html2rss
|
|
|
11
11
|
def self.from_config(config)
|
|
12
12
|
RequestService::Policy.new(
|
|
13
13
|
max_requests: effective_max_requests_for(config),
|
|
14
|
-
max_redirects: config.max_redirects
|
|
14
|
+
max_redirects: config.max_redirects,
|
|
15
|
+
total_timeout_seconds: config.total_timeout_seconds || RequestService::Policy::DEFAULTS[:total_timeout_seconds]
|
|
15
16
|
)
|
|
16
17
|
end
|
|
17
18
|
|
data/lib/html2rss/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: html2rss
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.20.
|
|
4
|
+
version: 0.20.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gil Desmarais
|
|
@@ -390,7 +390,7 @@ licenses:
|
|
|
390
390
|
- MIT
|
|
391
391
|
metadata:
|
|
392
392
|
allowed_push_host: https://rubygems.org
|
|
393
|
-
changelog_uri: https://github.com/html2rss/html2rss/releases/tag/v0.20.
|
|
393
|
+
changelog_uri: https://github.com/html2rss/html2rss/releases/tag/v0.20.1
|
|
394
394
|
rubygems_mfa_required: 'true'
|
|
395
395
|
rdoc_options: []
|
|
396
396
|
require_paths:
|