Class: Html2rss::FeedPipeline
- Inherits:
-
Object
- Object
- Html2rss::FeedPipeline
- Defined in:
- lib/html2rss/feed_pipeline.rb,
lib/html2rss/feed_pipeline/auto_fallback.rb,
lib/html2rss/feed_pipeline/strategy_plan.rb,
lib/html2rss/feed_pipeline/runtime_policy.rb
Overview
Builds feeds from validated config through request, extraction, and rendering stages.
Defined Under Namespace
Classes: AutoFallback, PipelineOutcome, RuntimePolicy, StrategyPlan
Instance Method Summary collapse
-
#deduplicated_articles(config:, response:, request_session:) ⇒ Array(Array<Html2rss::Article>, Integer, Hash)
Unique articles, dedup drops, admission drops.
-
#initialize(raw_config) ⇒ FeedPipeline
constructor
A new instance of FeedPipeline.
- #request_session_for(config, strategy:, resources:, scrape_url: nil) ⇒ Html2rss::RequestSession
-
#to_outcome ⇒ PipelineOutcome
Runs the pipeline once and returns scrape-finished outcome (before Channel/Status).
-
#to_outcome_and_result ⇒ Array(PipelineOutcome, FeedResult)
Runs the pipeline once and returns scrape outcome plus FeedResult without a second fetch.
-
#to_result ⇒ Html2rss::FeedResult
Runs the pipeline once and returns an opaque, Marshal-cacheable result.
Constructor Details
#initialize(raw_config) ⇒ FeedPipeline
Returns a new instance of FeedPipeline.
20 21 22 |
# File 'lib/html2rss/feed_pipeline.rb', line 20 def initialize(raw_config) @raw_config = raw_config end |
Instance Method Details
#deduplicated_articles(config:, response:, request_session:) ⇒ Array(Array<Html2rss::Article>, Integer, Hash)
Returns unique articles, dedup drops, admission drops.
75 76 77 78 79 |
# File 'lib/html2rss/feed_pipeline.rb', line 75 def deduplicated_articles(config:, response:, request_session:) collected, admission_drops = collect_articles(config:, response:, request_session:) unique = Article::Deduplicator.new(collected).call [unique, collected.size - unique.size, admission_drops] end |
#request_session_for(config, strategy:, resources:, scrape_url: nil) ⇒ Html2rss::RequestSession
60 61 62 63 64 65 66 67 68 |
# File 'lib/html2rss/feed_pipeline.rb', line 60 def request_session_for(config, strategy:, resources:, scrape_url: nil) RequestSession.build( config:, strategy:, budget: resources.budget, policy: resources.policy, scrape_url: ) end |
#to_outcome ⇒ PipelineOutcome
Runs the pipeline once and returns scrape-finished outcome (before Channel/Status). Used by Capture which needs the response body for SST selector derivation.
29 30 31 32 |
# File 'lib/html2rss/feed_pipeline.rb', line 29 def to_outcome config = Config.from_hash(raw_config, params: raw_config[:params]) pipeline_outcome_for(config) end |
#to_outcome_and_result ⇒ Array(PipelineOutcome, FeedResult)
Runs the pipeline once and returns scrape outcome plus Html2rss::FeedResult without a second fetch.
38 39 40 41 42 |
# File 'lib/html2rss/feed_pipeline.rb', line 38 def to_outcome_and_result config = Config.from_hash(raw_config, params: raw_config[:params]) outcome = pipeline_outcome_for(config) [outcome, feed_result_for(config, outcome)] end |
#to_result ⇒ Html2rss::FeedResult
Runs the pipeline once and returns an opaque, Marshal-cacheable result.
48 49 50 51 52 |
# File 'lib/html2rss/feed_pipeline.rb', line 48 def to_result config = Config.from_hash(raw_config, params: raw_config[:params]) outcome = pipeline_outcome_for(config) feed_result_for(config, outcome) end |