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

Parameters:

  • config (Hash{Symbol => Object})

    the configuration hash.

Raises:



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

Returns request controls with provenance.

Returns:



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

def request_controls
  @request_controls
end

Instance Method Details

#auto_sourceHash{Symbol => Object}?

Returns auto-source configuration.

Returns:

  • (Hash{Symbol => Object}, nil)

    auto-source configuration



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

def auto_source = config[:auto_source]

#channelHash{Symbol => Object}

Returns channel configuration.

Returns:

  • (Hash{Symbol => Object})

    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.

Returns:

  • (Boolean)

    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

#headersHash{String => String}

Returns normalized HTTP headers.

Returns:

  • (Hash{String => String})

    normalized HTTP headers



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

def headers = config[:headers]
# @return [Hash{Symbol => Object}] channel configuration

#max_redirectsInteger?

Returns configured redirect budget.

Returns:

  • (Integer, nil)

    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_requestsInteger?

Returns configured request budget.

Returns:

  • (Integer, nil)

    configured request budget



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

def max_requests = request_controls.max_requests
# @return [Array<Hash>] stylesheet definitions

#requestHash{Symbol => Object}

Returns request envelope configuration.

Returns:

  • (Hash{Symbol => Object})

    request envelope configuration



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

def request = config[:request]

#selectorsHash{Symbol => Object}?

Returns selectors configuration.

Returns:

  • (Hash{Symbol => Object}, nil)

    selectors configuration



70
71
# File 'lib/html2rss/config.rb', line 70

def selectors = config[:selectors]
# @return [Hash{Symbol => Object}, nil] auto-source configuration

#strategySymbol?

Returns selected request strategy.

Returns:

  • (Symbol, nil)

    selected request strategy



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

def strategy = request_controls.strategy
# @return [Integer, nil] configured redirect budget

#stylesheetsArray<Hash>

Returns stylesheet definitions.

Returns:

  • (Array<Hash>)

    stylesheet definitions



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

def stylesheets = config[:stylesheets]

#time_zoneString?

Returns configured channel time zone.

Returns:

  • (String, nil)

    configured channel time zone



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

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

#urlString

Returns source channel URL.

Returns:

  • (String)

    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