38 lines
1.4 KiB
Python
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"
|