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

Отправка SMS через внешний сервис API

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

Код‑ревью: оценить устойчивость реализации и правильность обработки различных HTTP‑статусов.

import requests, json, logging
logger = logging.getLogger(__name__)

def send_sms_via_world(recipient: str, message: str) -> tuple:
    auth_url = 'https://my.it.com' + '/api/auth/login?email=it@it.in&password=password'
    auth_resp = requests.post(url=auth_url)
    token = auth_resp.json().get('access_token')

    logger.warning(f'response it 1: {auth_resp.text}')

    send_url = 'https://my.it.com' + '/api/send'
    payload = {
        "type": "sms",
        "sender": "Sender",
        "body": str(message),
        "recipient": str(recipient)
    }

    hdrs = {
        'Authorization': f'Bearer {token}'
    }

    send_resp = requests.post(url=send_url, headers=hdrs, data=json.dumps(payload))

    logger.warning(f'response it 2: {send_resp.text}')

    if send_resp.status_code == 200:
        return send_url, 0, send_resp.status_code, send_resp.json()
    elif send_resp.status_code == 400:
        return send_url, 1, send_resp.status_code, 'Bad request'
    elif send_resp.status_code == 408:
        return send_url, 2, send_resp.status_code, 'Time out in querying'
    elif send_resp.status_code == 500:
        return send_url, -99, send_resp.status_code, 'Internal Error. Please contact with your administrator.'