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.
|
This function should be called when setting up or testing the Stripe integration.
|
||||||
"""
|
"""
|
||||||
fiat_provider = await get_fiat_provider(provider)
|
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()
|
status = await fiat_provider.status()
|
||||||
if status.error_message:
|
if status.error_message:
|
||||||
return SimpleStatus(
|
return SimpleStatus(
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,9 @@ async def create_fiat_invoice(
|
||||||
internal_payment = await create_wallet_invoice(wallet_id, invoice_data)
|
internal_payment = await create_wallet_invoice(wallet_id, invoice_data)
|
||||||
|
|
||||||
fiat_provider = await get_fiat_provider(fiat_provider_name)
|
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(
|
fiat_invoice = await fiat_provider.create_invoice(
|
||||||
amount=invoice_data.amount,
|
amount=invoice_data.amount,
|
||||||
payment_hash=internal_payment.payment_hash,
|
payment_hash=internal_payment.payment_hash,
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ from __future__ import annotations
|
||||||
import importlib
|
import importlib
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
from lnbits.fiat.base import FiatProvider
|
from lnbits.fiat.base import FiatProvider
|
||||||
from lnbits.settings import settings
|
from lnbits.settings import settings
|
||||||
|
|
||||||
|
|
@ -15,7 +17,7 @@ class FiatProviderType(Enum):
|
||||||
stripe = "StripeWallet"
|
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__:
|
if name not in FiatProviderType.__members__:
|
||||||
raise ValueError(f"Fiat provider '{name}' is not supported.")
|
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]
|
del fiat_providers[name]
|
||||||
else:
|
else:
|
||||||
return fiat_provider
|
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]
|
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):
|
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)
|
provider_constructor = getattr(fiat_module, fiat_provider.value)
|
||||||
return provider_constructor()
|
return provider_constructor()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue