56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/browserbeam/errors.rb', line 56
def self.raise_for_status(status_code, body, )
error_data = body.is_a?(Hash) ? (body["error"] || {}) : {}
code = error_data["code"] || "unknown"
message = error_data["message"] || "Unknown error"
context = error_data["context"]
request_id = ["x-request-id"]
retry_after_raw = ["retry-after"]
retry_after = retry_after_raw ? retry_after_raw.to_i : nil
kwargs = { code: code, status_code: status_code, context: context, request_id: request_id }
case status_code
when 401
raise AuthenticationError.new(message, **kwargs)
when 429
if code == "quota_exceeded"
raise QuotaExceededError.new(message, retry_after: retry_after, **kwargs)
end
raise RateLimitError.new(message, retry_after: retry_after, **kwargs)
when 404
raise SessionNotFoundError.new(message, **kwargs)
when 503
raise EngineUnavailableError.new(message, retry_after: retry_after, **kwargs)
when 400
raise InvalidRequestError.new(message, **kwargs)
else
raise Error.new(message, **kwargs)
end
end
|