import requests
import time
def make_api_request(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
elif response.status_code == 400:
error = response.json()
raise ValueError(f"Invalid request: {error['message']}")
elif response.status_code == 401:
raise PermissionError("Invalid or missing API key")
elif response.status_code == 404:
return None # Vessel not found
elif response.status_code == 429:
wait_time = 2 ** attempt
time.sleep(wait_time)
continue
else:
raise Exception(f"API error: {response.status_code}")
raise Exception("Max retries exceeded")