fix: catch init fiat providers (#3281)
This commit is contained in:
parent
851c952c6d
commit
133afff8ee
3 changed files with 19 additions and 4 deletions
|
|
@ -176,6 +176,11 @@ async def test_connection(provider: str) -> SimpleStatus:
|
|||
This function should be called when setting up or testing the Stripe integration.
|
||||
"""
|
||||
fiat_provider = await get_fiat_provider(provider)
|
||||
if not fiat_provider:
|
||||
return SimpleStatus(
|
||||
success=False,
|
||||
message=f"Fiat provider '{provider}' not found.",
|
||||
)
|
||||
status = await fiat_provider.status()
|
||||
if status.error_message:
|
||||
return SimpleStatus(
|
||||
|
|
|
|||
|
|
@ -136,6 +136,9 @@ async def create_fiat_invoice(
|
|||
internal_payment = await create_wallet_invoice(wallet_id, invoice_data)
|
||||
|
||||
fiat_provider = await get_fiat_provider(fiat_provider_name)
|
||||
if not fiat_provider:
|
||||
raise InvoiceError("No fiat provider found.", status="failed")
|
||||
|
||||
fiat_invoice = await fiat_provider.create_invoice(
|
||||
amount=invoice_data.amount,
|
||||
payment_hash=internal_payment.payment_hash,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ from __future__ import annotations
|
|||
import importlib
|
||||
from enum import Enum
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from lnbits.fiat.base import FiatProvider
|
||||
from lnbits.settings import settings
|
||||
|
||||
|
|
@ -15,7 +17,7 @@ class FiatProviderType(Enum):
|
|||
stripe = "StripeWallet"
|
||||
|
||||
|
||||
async def get_fiat_provider(name: str) -> FiatProvider:
|
||||
async def get_fiat_provider(name: str) -> FiatProvider | None:
|
||||
if name not in FiatProviderType.__members__:
|
||||
raise ValueError(f"Fiat provider '{name}' is not supported.")
|
||||
|
||||
|
|
@ -27,13 +29,18 @@ async def get_fiat_provider(name: str) -> FiatProvider:
|
|||
del fiat_providers[name]
|
||||
else:
|
||||
return fiat_provider
|
||||
fiat_providers[name] = _init_fiat_provider(FiatProviderType[name])
|
||||
_provider = _init_fiat_provider(FiatProviderType[name])
|
||||
if not _provider:
|
||||
return None
|
||||
|
||||
fiat_providers[name] = _provider
|
||||
return fiat_providers[name]
|
||||
|
||||
|
||||
def _init_fiat_provider(fiat_provider: FiatProviderType) -> FiatProvider:
|
||||
def _init_fiat_provider(fiat_provider: FiatProviderType) -> FiatProvider | None:
|
||||
if not settings.is_fiat_provider_enabled(fiat_provider.name):
|
||||
raise ValueError(f"Fiat provider '{fiat_provider.name}' not enabled.")
|
||||
logger.warning(f"Fiat provider '{fiat_provider.name}' not enabled.")
|
||||
return None
|
||||
provider_constructor = getattr(fiat_module, fiat_provider.value)
|
||||
return provider_constructor()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue