Junior — Senior
Calling an external API to send SMS
livecode
Task condition
Review this code snippet, assess its reliability and correctness in handling various HTTP statuses. Pay attention to the authentication process, request formation, and response logging.
def world_sms_send(receiver: str, text: str) -> tuple:
url = 'https://my.it.com' + '/api/auth/login?email=it@it.in&password=password'
r = requests.post(url=url)
access_token = r.json().get('access_token')
logger.warning(f'response it 1: {r.text}')
url = 'https://my.it.com' + '/api/send'
data = {
"type": "sms",
"sender": "Sender",
"body": str(text),
"recipient": str(receiver)
}
headers = {
'Authorization': 'Bearer {}'.format(access_token)
}
r = requests.post(url=url, headers=headers, data=json.dumps(data))
logger.warning(f'response it 2: {r.text}')
if r.status_code == 200:
return url, 0, r.status_code, r.json()
elif r.status_code == 400:
return url, 1, r.status_code, 'Bad request'
elif r.status_code == 408:
return url, 2, r.status_code, 'Time out in querying'
elif r.status_code == 500:
return url, -99, r.status_code, 'Internal Error. Please contact with your administrator.'