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 =
%i[strategy].freeze
- REQUEST_KEYS =
%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.
56 57 58 59 60 61 62 |
# File 'lib/html2rss/request_controls.rb', line 56 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.
70 71 72 |
# File 'lib/html2rss/request_controls.rb', line 70 def max_redirects @max_redirects end |
#max_requests ⇒ Integer? (readonly)
Returns effective request budget.
74 75 76 |
# File 'lib/html2rss/request_controls.rb', line 74 def max_requests @max_requests end |
#strategy ⇒ Symbol? (readonly)
Returns effective request strategy.
66 67 68 |
# File 'lib/html2rss/request_controls.rb', line 66 def strategy @strategy end |
Class Method Details
.from_config(config) ⇒ RequestControls
Returns request controls extracted from the config hash.
13 14 15 16 17 18 19 20 |
# File 'lib/html2rss/request_controls.rb', line 13 def self.from_config(config) new( strategy: value_for(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.
102 103 104 105 106 107 |
# File 'lib/html2rss/request_controls.rb', line 102 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.
79 80 81 |
# File 'lib/html2rss/request_controls.rb', line 79 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.
88 89 90 91 92 93 94 95 |
# File 'lib/html2rss/request_controls.rb', line 88 def with_effective_values(strategy:, max_redirects:, max_requests:) self.class.new( strategy:, max_redirects:, max_requests:, explicit_keys: ) end |