Class: Underpass::ErrorParser

Inherits:
Object
  • Object
show all
Defined in:
lib/underpass/error_parser.rb

Overview

Parses HTML error responses from the Overpass API into structured data.

The Overpass API returns HTML error pages when queries fail. This class extracts error information from those responses and returns structured hashes with code, message, and details.

Examples:

result = ErrorParser.parse("<html>...runtime error: Query timed out...</html>", 504)
result[:code]    # => "timeout"
result[:message] # => "Query timed out in \"query\" at line 3 after 25 seconds."
result[:details] # => { line: 3, timeout_seconds: 25 }

Constant Summary collapse

PATTERNS =

Known error patterns from Overpass API responses

{
  timeout: /Query timed out.*?at line (\d+) after (\d+) seconds/i,
  memory: /Query run out of memory.*?(\d+)\s*MB/i,
  syntax: /parse error:?\s*(.+)/i,
  runtime: /runtime error:?\s*(.+)/i
}.freeze

Class Method Summary collapse

Class Method Details

.parse(response_body, status_code) ⇒ Hash

Parses an error response body and returns structured error data.

Parameters:

  • response_body (String)

    the raw response body (usually HTML)

  • status_code (Integer)

    the HTTP status code

Returns:

  • (Hash)

    structured error data with :code, :message, and :details keys



29
30
31
32
33
34
# File 'lib/underpass/error_parser.rb', line 29

def self.parse(response_body, status_code)
  return rate_limit_result if status_code == 429

  text = extract_error_text(response_body)
  parse_error_text(text, status_code)
end