Class: Html2rss::RequestService::BotasaurusStrategy

Inherits:
Strategy
  • Object
show all
Defined in:
lib/html2rss/request_service/botasaurus_strategy.rb

Overview

Strategy to delegate fetching to a Botasaurus scrape API.

Instance Method Summary collapse

Methods inherited from Strategy

#initialize

Constructor Details

This class inherits a constructor from Html2rss::RequestService::Strategy

Instance Method Details

#executeResponse

Executes a Botasaurus-backed request with shared request policy guards.

Returns:

  • (Response)

    normalized request response

Raises:



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/html2rss/request_service/botasaurus_strategy.rb', line 18

def execute
  validate_request!
  transport_response = client.post('/scrape', JSON.generate(contract.request_payload), content_type_header)
  parsed_response = contract.parse_response(transport_response)
  raise_if_challenge_blocked!(parsed_response)
  raise_if_upstream_failed!(parsed_response)
  build_response(parsed_response)
rescue Faraday::TimeoutError, Timeout::Error => error
  raise RequestTimedOut, error.message
rescue Faraday::ConnectionFailed, Faraday::SSLError => error
  raise BotasaurusConnectionFailed, "Botasaurus connection failed: #{error.message}"
end