Revert "Handle missing RemnaWave API configuration gracefully"

This commit is contained in:
Egor
2025-10-03 22:11:51 +03:00
committed by GitHub
parent a7b4dc985f
commit f79420a9b0
2 changed files with 12 additions and 49 deletions

View File

@@ -106,23 +106,10 @@ class RemnaWaveAPIError(Exception):
class RemnaWaveAPI:
def __init__(self, base_url: Optional[str], api_key: Optional[str], secret_key: Optional[str] = None,
def __init__(self, base_url: str, api_key: str, secret_key: Optional[str] = None,
username: Optional[str] = None, password: Optional[str] = None):
normalized_base_url = (base_url or "").strip()
if not normalized_base_url:
raise RemnaWaveAPIError(
"RemnaWave API base URL is not configured. "
"Please set REMNAWAVE_API_URL environment variable or update settings."
)
if not (username and password) and not (api_key or "").strip():
raise RemnaWaveAPIError(
"RemnaWave API credentials are not configured. "
"Provide REMNAWAVE_API_KEY or username/password in settings."
)
self.base_url = normalized_base_url.rstrip('/')
self.base_url = base_url.rstrip('/')
self.api_key = api_key
self.secret_key = secret_key
self.username = username

View File

@@ -6,7 +6,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.config import settings
from app.database.models import Subscription, User, SubscriptionStatus, PromoGroup
from app.external.remnawave_api import (
RemnaWaveAPI, RemnaWaveUser, UserStatus,
RemnaWaveAPI, RemnaWaveUser, UserStatus,
TrafficLimitStrategy, RemnaWaveAPIError
)
from app.database.crud.user import get_user_by_id
@@ -74,39 +74,17 @@ def get_traffic_reset_strategy():
return getattr(TrafficLimitStrategy, mapped_strategy)
class _DisabledRemnaWaveAPI:
"""Async context manager that always raises the stored configuration error."""
def __init__(self, error: RemnaWaveAPIError):
self._error = error
async def __aenter__(self):
raise self._error
async def __aexit__(self, exc_type, exc, tb):
return False
class SubscriptionService:
def __init__(self):
auth_params = settings.get_remnawave_auth_params()
try:
self.api = RemnaWaveAPI(
base_url=auth_params["base_url"],
api_key=auth_params["api_key"],
secret_key=auth_params["secret_key"],
username=auth_params["username"],
password=auth_params["password"]
)
self._init_error: Optional[RemnaWaveAPIError] = None
except RemnaWaveAPIError as error:
self._init_error = error
logger.error(
"RemnaWave API configuration error: %s",
error
)
self.api = _DisabledRemnaWaveAPI(error)
self.api = RemnaWaveAPI(
base_url=auth_params["base_url"],
api_key=auth_params["api_key"],
secret_key=auth_params["secret_key"],
username=auth_params["username"],
password=auth_params["password"]
)
async def create_remnawave_user(
self,
@@ -205,8 +183,6 @@ class SubscriptionService:
except RemnaWaveAPIError as e:
logger.error(f"Ошибка RemnaWave API: {e}")
if self._init_error:
logger.error("Текущая конфигурация RemnaWave API некорректна: %s", self._init_error)
return None
except Exception as e:
logger.error(f"Ошибка создания RemnaWave пользователя: {e}")