class ArdieAPIError(Exception):
def __init__(self, status_code, error_code, message):
self.status_code = status_code
self.error_code = error_code
self.message = message
super().__init__(f"{error_code}: {message}")
def handle_response(response):
if response.ok:
return response.json()
try:
error_data = response.json()
except:
error_data = {"error": "unknown", "message": response.text}
raise ArdieAPIError(
status_code=response.status_code,
error_code=error_data.get("error", "unknown"),
message=error_data.get("message", "Unknown error")
)
# Usage
try:
result = handle_response(response)
except ArdieAPIError as e:
if e.error_code == "query_cap_exceeded":
print("Please upgrade your plan to continue.")
elif e.error_code == "rate_limit_exceeded":
print("Too many requests. Retrying...")
else:
print(f"API Error: {e.message}")