36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
from __future__ import annotations
|
|
import logging
|
|
import random
|
|
import uuid
|
|
from app.config import ProviderConfig
|
|
from app.providers import SendResult
|
|
from app.providers.base import BaseProvider
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class LkApiProvider(BaseProvider):
|
|
"""
|
|
Внутренний провайдер — SMS не шлёт.
|
|
Генерирует код, который отображается в личном кабинете.
|
|
Используется для всех стран кроме России.
|
|
"""
|
|
name = "lk_api"
|
|
|
|
def __init__(self, config: ProviderConfig | None = None) -> None:
|
|
pass
|
|
|
|
async def send(self, phone_number: str, code: str | None = None) -> SendResult:
|
|
normalized = phone_number if phone_number.startswith("+") else f"+{phone_number}"
|
|
if not code:
|
|
code = str(random.randint(10000, 99999))
|
|
request_uuid = str(uuid.uuid4())
|
|
logger.info(
|
|
"lk_api: код для ЛК | phone=%s code=%s uuid=%s",
|
|
normalized, code, request_uuid,
|
|
)
|
|
return SendResult(
|
|
success=True,
|
|
provider=self.name,
|
|
code=code,
|
|
raw_response={"code": int(code), "uuid": request_uuid, "note": "displayed in personal cabinet"},
|
|
) |