Exception: Rospatent::Errors::ApiError

Inherits:
Error
  • Object
show all
Defined in:
lib/rospatent/errors.rb

Overview

Raised when the API returns an error response

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message, status_code = nil, response_body = nil, request_id = nil) ⇒ ApiError

Initialize a new API error

Parameters:

  • message (String)

    Error message

  • status_code (Integer) (defaults to: nil)

    HTTP status code

  • response_body (String) (defaults to: nil)

    Response body from API

  • request_id (String) (defaults to: nil)

    Request ID for tracking



24
25
26
27
28
29
# File 'lib/rospatent/errors.rb', line 24

def initialize(message, status_code = nil, response_body = nil, request_id = nil)
  @status_code = status_code
  @response_body = response_body
  @request_id = request_id
  super(message)
end

Instance Attribute Details

#request_idObject (readonly)

Returns the value of attribute request_id.



17
18
19
# File 'lib/rospatent/errors.rb', line 17

def request_id
  @request_id
end

#response_bodyObject (readonly)

Returns the value of attribute response_body.



17
18
19
# File 'lib/rospatent/errors.rb', line 17

def response_body
  @response_body
end

#status_codeObject (readonly)

Returns the value of attribute status_code.



17
18
19
# File 'lib/rospatent/errors.rb', line 17

def status_code
  @status_code
end

Instance Method Details

#retryable?Boolean

Check if error is retryable based on status code

Returns:

  • (Boolean)

    true if the error might be temporary



41
42
43
44
45
46
# File 'lib/rospatent/errors.rb', line 41

def retryable?
  return false unless @status_code

  # Retryable status codes: 408, 429, 500, 502, 503, 504
  [408, 429, 500, 502, 503, 504].include?(@status_code)
end

#to_sString

Provide more descriptive error message

Returns:

  • (String)

    Formatted error message



33
34
35
36
37
# File 'lib/rospatent/errors.rb', line 33

def to_s
  msg = "API Error (#{@status_code || 'unknown'}): #{super}"
  msg += " [Request ID: #{@request_id}]" if @request_id
  msg
end