Class: Html2rss::RequestService
- Inherits:
-
Object
- Object
- Html2rss::RequestService
- Defined in:
- lib/html2rss/request_service.rb,
lib/html2rss/request_service/budget.rb,
lib/html2rss/request_service/policy.rb,
lib/html2rss/request_service/context.rb,
lib/html2rss/request_service/response.rb,
lib/html2rss/request_service/strategy.rb,
lib/html2rss/request_service/network_guard.rb,
lib/html2rss/request_service/httpx_strategy.rb,
lib/html2rss/request_service/response_guard.rb,
lib/html2rss/request_service/blocked_surface.rb,
lib/html2rss/request_service/compressed_body.rb,
lib/html2rss/request_service/botasaurus_contract.rb,
lib/html2rss/request_service/botasaurus_strategy.rb,
lib/html2rss/request_service/local_file_strategy.rb
Overview
Requests website URLs to retrieve their HTML for further processing. Provides concrete transport strategies (e.g. HttpxStrategy, BotasaurusStrategy).
Feed-level :auto is not registered here — FeedPipeline::StrategyPlan resolves
it to a concrete strategy (or FeedPipeline::AutoFallback chain) before execute.
Defined Under Namespace
Modules: BlockedSurface, CompressedBody Classes: BlockedSurfaceDetected, BotasaurusConfigurationError, BotasaurusConnectionFailed, BotasaurusContract, BotasaurusServiceError, BotasaurusStrategy, Budget, Context, CrossOriginFollowUpDenied, HttpxStrategy, InvalidUrl, LocalFileStrategy, NetworkGuard, Policy, PrivateNetworkDenied, RedirectLimitReached, RequestBudgetExceeded, RequestTimedOut, Response, ResponseGuard, ResponseTooLarge, Strategy, UnknownStrategy, UnsupportedResponseContentType, UnsupportedUrlScheme
Constant Summary collapse
- STRATEGIES =
Map of supported strategy names to their implementation classes.
{ default: HttpxStrategy, httpx: HttpxStrategy, faraday: HttpxStrategy, botasaurus: BotasaurusStrategy, local_file: LocalFileStrategy }.freeze
- DEFAULT_STRATEGY_NAME =
Canonical default strategy symbol.
:default
Class Method Summary collapse
-
.default_strategy_name ⇒ Symbol
The default strategy name.
-
.execute(ctx, strategy: default_strategy_name) ⇒ Response
Executes the request using the specified strategy.
-
.strategy_names ⇒ Array<String>
The names of the registered strategies.
-
.strategy_registered?(name) ⇒ Boolean
Checks if a strategy is registered.
Class Method Details
.default_strategy_name ⇒ Symbol
Returns the default strategy name.
73 |
# File 'lib/html2rss/request_service.rb', line 73 def default_strategy_name = DEFAULT_STRATEGY_NAME |
.execute(ctx, strategy: default_strategy_name) ⇒ Response
Executes the request using the specified strategy.
92 93 94 95 96 97 98 99 100 101 |
# File 'lib/html2rss/request_service.rb', line 92 def execute(ctx, strategy: default_strategy_name) strategy_sym = strategy.to_sym strategy_class = STRATEGIES.fetch(strategy_sym) do raise UnknownStrategy, "The strategy '#{strategy}' is not known. Available strategies: #{strategy_names.join(', ')}" end warn_migration_strategy(strategy_sym) if strategy_sym == :faraday strategy_class.new(ctx).execute end |
.strategy_names ⇒ Array<String>
Returns the names of the registered strategies.
76 |
# File 'lib/html2rss/request_service.rb', line 76 def strategy_names = STRATEGIES.keys.map(&:to_s) |
.strategy_registered?(name) ⇒ Boolean
Checks if a strategy is registered.
82 83 84 |
# File 'lib/html2rss/request_service.rb', line 82 def strategy_registered?(name) STRATEGIES.key?(name.to_sym) end |