Class: Html2rss::Config
- Inherits:
-
Object
- Object
- Html2rss::Config
- Extended by:
- ClassMethods
- Defined in:
- lib/html2rss/config.rb,
lib/html2rss/config/schema.rb,
lib/html2rss/config/validator.rb,
lib/html2rss/config/class_methods.rb,
lib/html2rss/config/dynamic_params.rb,
lib/html2rss/config/request_headers.rb,
lib/html2rss/config/multiple_feeds_config.rb
Overview
The provided configuration is used to generate the RSS feed. This class provides methods to load and process configuration from a YAML file, supporting both single and multiple feed configurations.
Configuration is validated during initialization.
Defined Under Namespace
Modules: ClassMethods, Schema Classes: DynamicParams, InvalidConfig, MultipleFeedsConfig, Preparer, RequestHeaders, Validator
Constant Summary
Constants included from ClassMethods
Instance Attribute Summary collapse
-
#request_controls ⇒ Html2rss::RequestControls
readonly
Request controls with provenance.
Instance Method Summary collapse
-
#auto_source ⇒ Hash{Symbol => Object}?
Auto-source configuration.
-
#channel ⇒ Hash{Symbol => Object}
Channel configuration.
-
#explicit_max_requests? ⇒ Boolean
Whether max_requests was explicitly configured by the caller.
-
#headers ⇒ Hash{String => String}
Normalized HTTP headers.
-
#initialize(config) ⇒ Config
constructor
Initializes the configuration object.
-
#max_redirects ⇒ Integer?
Configured redirect budget.
-
#max_requests ⇒ Integer?
Configured request budget.
-
#request ⇒ Hash{Symbol => Object}
Request envelope configuration.
-
#selectors ⇒ Hash{Symbol => Object}?
Selectors configuration.
-
#strategy ⇒ Symbol?
Selected request strategy.
-
#stylesheets ⇒ Array<Hash>
Stylesheet definitions.
-
#time_zone ⇒ String?
Configured channel time zone.
-
#url ⇒ String
Source channel URL.
Methods included from ClassMethods
auto_source_config, default_config, default_strategy_name, from_hash, json_schema, json_schema_json, load_yaml, schema_path, validate, validate_yaml
Constructor Details
#initialize(config) ⇒ Config
Initializes the configuration object.
Processes deprecated attributes, applies default values, and validates the configuration.
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/html2rss/config.rb', line 25 def initialize(config) @request_controls = RequestControls.from_config(config) prepared_config = Preparer.new.call(config) validated_config = validated_config_for(prepared_config) @config = validated_config.freeze @request_controls = request_controls.with_effective_values( strategy: validated_config[:strategy], max_redirects: validated_config.dig(:request, :max_redirects), max_requests: validated_config.dig(:request, :max_requests) ) end |
Instance Attribute Details
#request_controls ⇒ Html2rss::RequestControls (readonly)
Returns request controls with provenance.
55 56 57 |
# File 'lib/html2rss/config.rb', line 55 def request_controls @request_controls end |
Instance Method Details
#auto_source ⇒ Hash{Symbol => Object}?
Returns auto-source configuration.
72 |
# File 'lib/html2rss/config.rb', line 72 def auto_source = config[:auto_source] |
#channel ⇒ Hash{Symbol => Object}
Returns channel configuration.
60 61 |
# File 'lib/html2rss/config.rb', line 60 def channel = config[:channel] # @return [String] source channel URL |
#explicit_max_requests? ⇒ Boolean
Returns whether max_requests was explicitly configured by the caller.
49 50 51 |
# File 'lib/html2rss/config.rb', line 49 def explicit_max_requests? request_controls.explicit?(:max_requests) end |
#headers ⇒ Hash{String => String}
Returns normalized HTTP headers.
58 59 |
# File 'lib/html2rss/config.rb', line 58 def headers = config[:headers] # @return [Hash{Symbol => Object}] channel configuration |
#max_redirects ⇒ Integer?
Returns configured redirect budget.
41 42 |
# File 'lib/html2rss/config.rb', line 41 def max_redirects = request_controls.max_redirects # @return [Integer, nil] configured request budget |
#max_requests ⇒ Integer?
Returns configured request budget.
43 44 |
# File 'lib/html2rss/config.rb', line 43 def max_requests = request_controls.max_requests # @return [Array<Hash>] stylesheet definitions |
#request ⇒ Hash{Symbol => Object}
Returns request envelope configuration.
67 |
# File 'lib/html2rss/config.rb', line 67 def request = config[:request] |
#selectors ⇒ Hash{Symbol => Object}?
Returns selectors configuration.
70 71 |
# File 'lib/html2rss/config.rb', line 70 def selectors = config[:selectors] # @return [Hash{Symbol => Object}, nil] auto-source configuration |
#strategy ⇒ Symbol?
Returns selected request strategy.
39 40 |
# File 'lib/html2rss/config.rb', line 39 def strategy = request_controls.strategy # @return [Integer, nil] configured redirect budget |
#stylesheets ⇒ Array<Hash>
Returns stylesheet definitions.
45 |
# File 'lib/html2rss/config.rb', line 45 def stylesheets = config[:stylesheets] |
#time_zone ⇒ String?
Returns configured channel time zone.
64 |
# File 'lib/html2rss/config.rb', line 64 def time_zone = config.dig(:channel, :time_zone) |
#url ⇒ String
Returns source channel URL.
62 63 |
# File 'lib/html2rss/config.rb', line 62 def url = config.dig(:channel, :url) # @return [String, nil] configured channel time zone |