Class: Html2rss::FeedPipeline::RuntimePolicy

Inherits:
Object
  • Object
show all
Defined in:
lib/html2rss/feed_pipeline/runtime_policy.rb

Overview

Planner for the runtime request policy and budgets of a feed run.

HTTP request slots (pagination, document GETs, strategy fallback) are planned from configuration options.

Defined Under Namespace

Classes: Resources

Class Method Summary collapse

Class Method Details

.budget_for(config) ⇒ Html2rss::RequestService::Budget

Builds a Budget with request slot pools.

Parameters:

Returns:



46
# File 'lib/html2rss/feed_pipeline/runtime_policy.rb', line 46

def self.budget_for(config) = resources_for(config).budget

.from_config(config) ⇒ Html2rss::RequestService::Policy

Returns request policy derived from runtime config.

Parameters:

Returns:



17
18
19
20
21
22
23
# File 'lib/html2rss/feed_pipeline/runtime_policy.rb', line 17

def self.from_config(config)
  RequestService::Policy.new(
    max_requests: effective_max_requests_for(config),
    max_redirects: config.max_redirects,
    total_timeout_seconds: config.total_timeout_seconds || RequestService::Policy::DEFAULTS[:total_timeout_seconds]
  )
end

.resources_for(config) ⇒ Resources

Builds policy and budget from one from_config so FeedPipeline does not dual-own expansion.

Parameters:

Returns:

  • (Resources)

    shared policy + budget for the feed build



30
31
32
33
34
35
36
37
38
39
# File 'lib/html2rss/feed_pipeline/runtime_policy.rb', line 30

def self.resources_for(config)
  policy = from_config(config)
  Resources.new(
    policy:,
    budget: RequestService::Budget.new(
      max_requests: policy.max_requests,
      total_timeout_seconds: policy.total_timeout_seconds
    )
  )
end