Class: Html2rss::Config

Inherits:
Object
  • Object
show all
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

ClassMethods::UNSET

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ClassMethods

auto_source_config, default_config, 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.

Parameters:

  • config (Hash<Symbol, Object>)

    the configuration hash.

Raises:



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/html2rss/config.rb', line 24

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_controlsHtml2rss::RequestControls (readonly)

Returns request controls with provenance.

Returns:



50
51
52
# File 'lib/html2rss/config.rb', line 50

def request_controls
  @request_controls
end

Instance Method Details

#auto_sourceObject



60
# File 'lib/html2rss/config.rb', line 60

def auto_source = config[:auto_source]

#channelObject



53
# File 'lib/html2rss/config.rb', line 53

def channel = config[:channel]

#explicit_max_requests?Boolean

Returns whether max_requests was explicitly configured by the caller.

Returns:

  • (Boolean)

    whether max_requests was explicitly configured by the caller



44
45
46
# File 'lib/html2rss/config.rb', line 44

def explicit_max_requests?
  request_controls.explicit?(:max_requests)
end

#headersObject



52
# File 'lib/html2rss/config.rb', line 52

def headers = config[:headers]

#max_redirectsObject



38
# File 'lib/html2rss/config.rb', line 38

def max_redirects = request_controls.max_redirects

#max_requestsObject



39
# File 'lib/html2rss/config.rb', line 39

def max_requests = request_controls.max_requests

#requestObject



57
# File 'lib/html2rss/config.rb', line 57

def request = config[:request]

#selectorsObject



59
# File 'lib/html2rss/config.rb', line 59

def selectors = config[:selectors]

#strategyObject



37
# File 'lib/html2rss/config.rb', line 37

def strategy = request_controls.strategy

#stylesheetsObject



40
# File 'lib/html2rss/config.rb', line 40

def stylesheets = config[:stylesheets]

#time_zoneObject



55
# File 'lib/html2rss/config.rb', line 55

def time_zone = config.dig(:channel, :time_zone)

#urlObject



54
# File 'lib/html2rss/config.rb', line 54

def url = config.dig(:channel, :url)