Назад к задачам
Junior — Senior
4

Вызов внешнего API для отправки SMS

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Проведите ревью данного фрагмента кода, оцените его надёжность и корректность обработки различных HTTP‑статусов. Обратите внимание на процесс аутентификации, формирование запроса и логирование ответов.

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