in gnm_deliverables/management/commands/validate_archive.py [0:0]
def authenticated_request(uri:str, secret:str, verify=True, override_time:datetime=None) -> dict:
if override_time is not None:
timestamp = override_time
else:
timestamp = datetime.now()
authtoken, httpdate = get_token(uri, secret, timestamp)
headers = {
'X-Gu-Tools-HMAC-Date': httpdate,
'X-Gu-Tools-HMAC-Token': authtoken,
}
response = requests.get(uri, headers=headers, verify=verify)
if response.status_code==200:
return response.json()
elif response.status_code==404:
raise NotFoundResponse
elif response.status_code==403 or response.status_code==401:
logger.error("Server returned forbidden. Server said: {}".format(response.text))
raise ForbiddenResponse
elif response.status_code==500:
logger.error("Server error looking up. Server said: {}".format(response.text))
raise ServerErrorResponse
elif response.status_code==503 or response.status_code==504:
logger.warning("Server not available, retrying in 3s")
sleep(3)
return authenticated_request(uri, secret, verify=verify, override_time=override_time)
else:
raise Exception("Unexpected server response: {} {}".format(response.status_code, response.text))