Class: Html2rss::RequestControls
- Inherits:
-
Object
- Object
- Html2rss::RequestControls
- Defined in:
- lib/html2rss/request_controls.rb
Overview
Tracks runtime request controls together with whether each value was explicitly set.
Constant Summary collapse
- TOP_LEVEL_KEYS =
Request-control keys accepted at the top level of feed config.
%i[strategy].freeze
- REQUEST_KEYS =
Request-control keys accepted under the nested ‘request` config.
%i[max_redirects max_requests].freeze
Instance Attribute Summary collapse
-
#max_redirects ⇒ Integer?
readonly
Effective redirect limit.
-
#max_requests ⇒ Integer?
readonly
Effective request budget.
-
#strategy ⇒ Symbol?
readonly
Effective request strategy.
Class Method Summary collapse
-
.from_config(config) ⇒ RequestControls
Request controls extracted from the config hash.
Instance Method Summary collapse
-
#apply_to(config) ⇒ Hash{Symbol => Object}
Applies only explicitly set controls to the provided config hash.
-
#explicit?(name) ⇒ Boolean
Whether the control was explicitly supplied.
-
#initialize(strategy: nil, max_redirects: nil, max_requests: nil, explicit_keys: []) ⇒ RequestControls
constructor
A new instance of RequestControls.
-
#with_effective_values(strategy:, max_redirects:, max_requests:) ⇒ RequestControls
Controls updated with validated effective values.
Constructor Details
#initialize(strategy: nil, max_redirects: nil, max_requests: nil, explicit_keys: []) ⇒ RequestControls
Returns a new instance of RequestControls.
51 52 53 54 55 56 57 |
# File 'lib/html2rss/request_controls.rb', line 51 def initialize(strategy: nil, max_redirects: nil, max_requests: nil, explicit_keys: []) @strategy = strategy @max_redirects = max_redirects @max_requests = max_requests @explicit_keys = explicit_keys.map(&:to_sym).uniq.freeze freeze end |
Instance Attribute Details
#max_redirects ⇒ Integer? (readonly)
Returns effective redirect limit.
65 66 67 |
# File 'lib/html2rss/request_controls.rb', line 65 def max_redirects @max_redirects end |
#max_requests ⇒ Integer? (readonly)
Returns effective request budget.
69 70 71 |
# File 'lib/html2rss/request_controls.rb', line 69 def max_requests @max_requests end |
#strategy ⇒ Symbol? (readonly)
Returns effective request strategy.
61 62 63 |
# File 'lib/html2rss/request_controls.rb', line 61 def strategy @strategy end |
Class Method Details
.from_config(config) ⇒ RequestControls
Returns request controls extracted from the config hash.
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/html2rss/request_controls.rb', line 15 def self.from_config(config) HashUtil.assert_symbol_keys!(config, context: 'config', deep: false) HashUtil.assert_symbol_keys!(config[:request], context: 'config[:request]') if config[:request].is_a?(Hash) new( strategy: config[:strategy], max_redirects: request_value_for(config, :max_redirects), max_requests: request_value_for(config, :max_requests), explicit_keys: explicit_keys_for(config) ) end |
Instance Method Details
#apply_to(config) ⇒ Hash{Symbol => Object}
Applies only explicitly set controls to the provided config hash.
97 98 99 100 101 102 |
# File 'lib/html2rss/request_controls.rb', line 97 def apply_to(config) config[:strategy] = strategy if explicit?(:strategy) apply_request_value(config, :max_redirects, max_redirects) apply_request_value(config, :max_requests, max_requests) config end |
#explicit?(name) ⇒ Boolean
Returns whether the control was explicitly supplied.
74 75 76 |
# File 'lib/html2rss/request_controls.rb', line 74 def explicit?(name) explicit_keys.include?(name.to_sym) end |
#with_effective_values(strategy:, max_redirects:, max_requests:) ⇒ RequestControls
Returns controls updated with validated effective values.
83 84 85 86 87 88 89 90 |
# File 'lib/html2rss/request_controls.rb', line 83 def with_effective_values(strategy:, max_redirects:, max_requests:) self.class.new( strategy:, max_redirects:, max_requests:, explicit_keys: ) end |