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
37
# 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),
    total_timeout_seconds: validated_config.dig(:request, :total_timeout_seconds)
  )
end

Instance Attribute Details

#request_controlsHtml2rss::RequestControls (readonly)

Returns request controls with provenance.

Returns:



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

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



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

def auto_source = config[:auto_source]

#channelHash{Symbol => Object}

Returns channel configuration.

Returns:

  • (Hash{Symbol => Object})

    channel configuration



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

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



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

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

#headersHash{String => String}

Returns normalized HTTP headers.

Returns:

  • (Hash{String => String})

    normalized HTTP headers



61
62
# File 'lib/html2rss/config.rb', line 61

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

#max_redirectsInteger?

Returns configured redirect budget.

Returns:

  • (Integer, nil)

    configured redirect budget



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

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



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

def max_requests = request_controls.max_requests
# @return [Integer, nil] configured request timeout

#requestHash{Symbol => Object}

Returns request envelope configuration.

Returns:

  • (Hash{Symbol => Object})

    request envelope configuration



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

def request = config[:request]

#selectorsHash{Symbol => Object}?

Returns selectors configuration.

Returns:

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

    selectors configuration



73
74
# File 'lib/html2rss/config.rb', line 73

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

#strategySymbol?

Returns selected request strategy.

Returns:

  • (Symbol, nil)

    selected request strategy



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

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

#stylesheetsArray<Hash>

Returns stylesheet definitions.

Returns:

  • (Array<Hash>)

    stylesheet definitions



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

def stylesheets = config[:stylesheets]

#time_zoneString?

Returns configured channel time zone.

Returns:

  • (String, nil)

    configured channel time zone



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

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

#total_timeout_secondsInteger?

Returns configured request timeout.

Returns:

  • (Integer, nil)

    configured request timeout



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

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

#urlString

Returns source channel URL.

Returns:

  • (String)

    source channel URL



65
66
# File 'lib/html2rss/config.rb', line 65

def url = config.dig(:channel, :url)
# @return [String, nil] configured channel time zone