Sobes.tech
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.'