Files
gapido-grpc-auth/src/gapido_auth/infrastructure/sms_provider.py

38 lines
1.4 KiB
Python

import httpx
from gapido_auth.config import Settings
from gapido_auth.domain.ports import SmsClient
from gapido_auth.infrastructure.debug_sms_client import DebugSmsClient, DebugSmsStore
from gapido_auth.infrastructure.kavenegar_client import KavenegarSmsClient
from gapido_auth.infrastructure.sms_ir_client import SmsIrSmsClient
def create_sms_client(
settings: Settings,
transport: httpx.AsyncBaseTransport | None = None,
debug_store: DebugSmsStore | None = None,
) -> SmsClient:
"""Build the configured SMS provider strategy for the worker process."""
match settings.sms_provider:
case "kavenegar":
return KavenegarSmsClient(settings.kavenegar_api_key, transport=transport)
case "sms_ir":
return SmsIrSmsClient(settings.sms_ir_api_key, transport=transport)
case "debug":
if debug_store is None:
raise ValueError("debug_store is required for debug SMS provider")
return DebugSmsClient(debug_store, ttl_seconds=settings.demo_debug_sms_ttl_seconds)
def get_sms_template(settings: Settings) -> str:
"""Return the provider-specific OTP template identifier used in queued SMS jobs."""
match settings.sms_provider:
case "kavenegar":
return settings.kavenegar_login_template
case "sms_ir":
return str(settings.sms_ir_verify_template_id)
case "debug":
return "debug-otp"