From 4c77d6f11e4d3399858bb50bb478a7d215a5ad74 Mon Sep 17 00:00:00 2001 From: Charles Hill Date: Fri, 12 Nov 2021 02:57:31 -0500 Subject: [PATCH] Fix Bleskomat extension for FastAPI branch --- lnbits/extensions/bleskomat/helpers.py | 4 ++-- lnbits/extensions/bleskomat/lnurl_api.py | 6 +++--- lnbits/extensions/bleskomat/models.py | 10 +++++----- lnbits/extensions/bleskomat/views.py | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lnbits/extensions/bleskomat/helpers.py b/lnbits/extensions/bleskomat/helpers.py index 1062ca27..6e55b3df 100644 --- a/lnbits/extensions/bleskomat/helpers.py +++ b/lnbits/extensions/bleskomat/helpers.py @@ -35,8 +35,8 @@ def generate_bleskomat_lnurl_secret(api_key_id: str, signature: str): return m.hexdigest() -def get_callback_url(request: Request): - return request.url_for("bleskomat.api_bleskomat_lnurl") +def get_callback_url(req: Request): + return req.url_for("bleskomat.api_bleskomat_lnurl") def is_supported_lnurl_subprotocol(tag: str) -> bool: diff --git a/lnbits/extensions/bleskomat/lnurl_api.py b/lnbits/extensions/bleskomat/lnurl_api.py index fa3e6133..4faa0ee9 100644 --- a/lnbits/extensions/bleskomat/lnurl_api.py +++ b/lnbits/extensions/bleskomat/lnurl_api.py @@ -25,9 +25,9 @@ from .helpers import ( # Handles signed URL from Bleskomat ATMs and "action" callback of auto-generated LNURLs. @bleskomat_ext.get("/u", name="bleskomat.api_bleskomat_lnurl") -async def api_bleskomat_lnurl(request: Request): +async def api_bleskomat_lnurl(req: Request): try: - query = request.query_params + query = req.query_params # Unshorten query if "s" is used instead of "signature". if "s" in query: @@ -96,7 +96,7 @@ async def api_bleskomat_lnurl(request: Request): ) # Reply with LNURL response object. - return lnurl.get_info_response_object(secret) + return lnurl.get_info_response_object(secret, req) # No signature provided. # Treat as "action" callback. diff --git a/lnbits/extensions/bleskomat/models.py b/lnbits/extensions/bleskomat/models.py index e96ddb80..89aefe1f 100644 --- a/lnbits/extensions/bleskomat/models.py +++ b/lnbits/extensions/bleskomat/models.py @@ -7,7 +7,7 @@ from pydantic import BaseModel, validator from starlette.requests import Request from lnbits import bolt11 -from lnbits.core.services import pay_invoice +from lnbits.core.services import pay_invoice, PaymentFailure from . import db from .exchange_rates import exchange_rate_providers, fiat_currencies @@ -119,13 +119,13 @@ class BleskomatLnurl(BaseModel): tag = self.tag if tag == "withdrawRequest": try: - payment_hash = await pay_invoice( + await pay_invoice( wallet_id=self.wallet, payment_request=query["pr"] ) + except (ValueError, PermissionError, PaymentFailure) as e: + raise LnurlValidationError("Failed to pay invoice: " + str(e)) except Exception: - raise LnurlValidationError("Failed to pay invoice") - if not payment_hash: - raise LnurlValidationError("Failed to pay invoice") + raise LnurlValidationError("Unexpected error") async def use(self, conn) -> bool: now = int(time.time()) diff --git a/lnbits/extensions/bleskomat/views.py b/lnbits/extensions/bleskomat/views.py index c3e775c8..92d47513 100644 --- a/lnbits/extensions/bleskomat/views.py +++ b/lnbits/extensions/bleskomat/views.py @@ -14,13 +14,13 @@ templates = Jinja2Templates(directory="templates") @bleskomat_ext.get("/", response_class=HTMLResponse) -async def index(request: Request, user: User = Depends(check_user_exists)): +async def index(req: Request, user: User = Depends(check_user_exists)): bleskomat_vars = { - "callback_url": get_callback_url(request=request), + "callback_url": get_callback_url(req), "exchange_rate_providers": exchange_rate_providers_serializable, "fiat_currencies": fiat_currencies, } return bleskomat_renderer().TemplateResponse( "bleskomat/index.html", - {"request": request, "user": user.dict(), "bleskomat_vars": bleskomat_vars}, + {"request": req, "user": user.dict(), "bleskomat_vars": bleskomat_vars}, )