From de97c0f696f28bab040d5d6d966586524b818f99 Mon Sep 17 00:00:00 2001 From: Tiago vasconcelos Date: Mon, 11 Oct 2021 11:46:36 +0100 Subject: [PATCH] lnurlp import execption withdraw not working --- lnbits/extensions/lnurlp/lnurl.py | 1 + lnbits/extensions/withdraw/crud.py | 2 +- lnbits/extensions/withdraw/lnurl.py | 10 +++++----- lnbits/extensions/withdraw/models.py | 2 +- .../withdraw/templates/withdraw/display.html | 6 +++--- lnbits/extensions/withdraw/views.py | 3 ++- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/lnbits/extensions/lnurlp/lnurl.py b/lnbits/extensions/lnurlp/lnurl.py index ca17646f..fc6cc545 100644 --- a/lnbits/extensions/lnurlp/lnurl.py +++ b/lnbits/extensions/lnurlp/lnurl.py @@ -2,6 +2,7 @@ import hashlib import math from http import HTTPStatus from fastapi import FastAPI, Request +from starlette.exceptions import HTTPException from lnurl import LnurlPayResponse, LnurlPayActionResponse, LnurlErrorResponse # type: ignore from lnbits.core.services import create_invoice diff --git a/lnbits/extensions/withdraw/crud.py b/lnbits/extensions/withdraw/crud.py index 183d8629..839e7a40 100644 --- a/lnbits/extensions/withdraw/crud.py +++ b/lnbits/extensions/withdraw/crud.py @@ -61,7 +61,7 @@ async def get_withdraw_link(link_id: str, num=0) -> Optional[WithdrawLink]: # for item in row: # link.append(item) # link.append(num) - print("GET_LINK", WithdrawLink.from_row(row)) + # print("GET_LINK", WithdrawLink.from_row(row)) return WithdrawLink.from_row(row) diff --git a/lnbits/extensions/withdraw/lnurl.py b/lnbits/extensions/withdraw/lnurl.py index 75339cf7..dadc52e0 100644 --- a/lnbits/extensions/withdraw/lnurl.py +++ b/lnbits/extensions/withdraw/lnurl.py @@ -3,7 +3,9 @@ from http import HTTPStatus from datetime import datetime from lnbits.core.services import pay_invoice +from fastapi.param_functions import Query from starlette.requests import Request +from starlette.exceptions import HTTPException from . import withdraw_ext from .crud import get_withdraw_link_by_hash, update_withdraw_link @@ -80,19 +82,17 @@ async def api_lnurl_multi_response(request: Request, unique_hash, id_unique_hash # HTTPStatus.OK, # ) - return link.lnurl_response(request).dict() + return link.lnurl_response(req=request).dict() # CALLBACK @withdraw_ext.get("/api/v1/lnurl/cb/{unique_hash}", status_code=HTTPStatus.OK, name="withdraw.api_lnurl_callback") -async def api_lnurl_callback(unique_hash): +async def api_lnurl_callback(unique_hash, k1: str = Query(...), pr: str = Query(...)): link = await get_withdraw_link_by_hash(unique_hash) - k1 = request.query_params['k1'] - payment_request = request.query_params['pr'] + payment_request = pr now = int(datetime.now().timestamp()) - if not link: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, diff --git a/lnbits/extensions/withdraw/models.py b/lnbits/extensions/withdraw/models.py index 55b234e3..b01ad654 100644 --- a/lnbits/extensions/withdraw/models.py +++ b/lnbits/extensions/withdraw/models.py @@ -62,7 +62,7 @@ class WithdrawLink(BaseModel): def lnurl_response(self, req: Request) -> LnurlWithdrawResponse: url = req.url_for( - "withdraw.api_lnurl_callback", unique_hash=self.unique_hash, _external=True + name="withdraw.api_lnurl_callback", unique_hash=self.unique_hash ) return LnurlWithdrawResponse( callback=url, diff --git a/lnbits/extensions/withdraw/templates/withdraw/display.html b/lnbits/extensions/withdraw/templates/withdraw/display.html index f4d6ef9d..245b3ed1 100644 --- a/lnbits/extensions/withdraw/templates/withdraw/display.html +++ b/lnbits/extensions/withdraw/templates/withdraw/display.html @@ -7,10 +7,10 @@ {% if link.is_spent %} Withdraw is spent. {% endif %} - + @@ -18,7 +18,7 @@
- Copy LNURL
diff --git a/lnbits/extensions/withdraw/views.py b/lnbits/extensions/withdraw/views.py index eeacb36e..8d6eeee2 100644 --- a/lnbits/extensions/withdraw/views.py +++ b/lnbits/extensions/withdraw/views.py @@ -33,7 +33,8 @@ async def display(request: Request, link_id): ) # response.status_code = HTTPStatus.NOT_FOUND # return "Withdraw link does not exist." #probably here is where we should return the 404?? - return withdraw_renderer().TemplateResponse("withdraw/display.html", {"request":request,"link":{**link.dict(), "lnurl": link.lnurl(request)}, "unique":True}) + print("LINK", link) + return withdraw_renderer().TemplateResponse("withdraw/display.html", {"request":request,"link":link.dict(), "lnurl": link.lnurl(req=request), "unique":True}) @withdraw_ext.get("/img/{link_id}", response_class=StreamingResponse)