mirror of
https://github.com/openmax-server/server.git
synced 2026-05-23 20:11:41 +03:00
feat: 23 опкод для регистрации, смс шлюз, докер
This commit is contained in:
34
sms-gateway/app/providers/registry.py
Normal file
34
sms-gateway/app/providers/registry.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from __future__ import annotations
|
||||
import logging
|
||||
from app.config import Config, ProviderConfig
|
||||
from app.providers.base import BaseProvider
|
||||
from app.providers.lk_api import LkApiProvider
|
||||
from app.providers.sms_api import SmsApiProvider
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
PROVIDER_REGISTRY: dict[str, type[BaseProvider]] = {
|
||||
"sms_api": SmsApiProvider,
|
||||
"lk_api": LkApiProvider,
|
||||
}
|
||||
|
||||
def build_provider(name: str, config: ProviderConfig) -> BaseProvider | None:
|
||||
cls = PROVIDER_REGISTRY.get(config.type)
|
||||
if cls is None:
|
||||
logger.error("Неизвестный тип провайдера: %s", config.type)
|
||||
return None
|
||||
if not config.enabled:
|
||||
logger.debug("Провайдер %s отключён", name)
|
||||
return None
|
||||
return cls(config)
|
||||
|
||||
def build_all_providers(config: Config) -> dict[str, BaseProvider]:
|
||||
result: dict[str, BaseProvider] = {}
|
||||
for name, provider_cfg in config.providers.items():
|
||||
provider = build_provider(name, provider_cfg)
|
||||
if provider is not None:
|
||||
result[name] = provider
|
||||
logger.info("Провайдер загружен: %s (тип: %s)", name, provider_cfg.type)
|
||||
if "lk_api" not in result:
|
||||
result["lk_api"] = LkApiProvider()
|
||||
logger.info("lk_api добавлен как fallback по умолчанию")
|
||||
return result
|
||||
Reference in New Issue
Block a user