From 331a3832232f96f360c12c9a640042c33d67f1c7 Mon Sep 17 00:00:00 2001 From: benarc Date: Fri, 17 Dec 2021 12:15:33 +0000 Subject: [PATCH] Adding manual check --- lnbits/extensions/lnurlpayout/crud.py | 6 +-- lnbits/extensions/lnurlpayout/migrations.py | 1 + lnbits/extensions/lnurlpayout/models.py | 1 + lnbits/extensions/lnurlpayout/tasks.py | 5 ++- .../templates/lnurlpayout/_api_docs.html | 44 +++++++++++++++---- .../templates/lnurlpayout/index.html | 1 + lnbits/extensions/lnurlpayout/views_api.py | 9 ++-- 7 files changed, 50 insertions(+), 17 deletions(-) diff --git a/lnbits/extensions/lnurlpayout/crud.py b/lnbits/extensions/lnurlpayout/crud.py index 0540cf770..873099ab0 100644 --- a/lnbits/extensions/lnurlpayout/crud.py +++ b/lnbits/extensions/lnurlpayout/crud.py @@ -6,14 +6,14 @@ from . import db from .models import lnurlpayout, CreateLnurlPayoutData -async def create_lnurlpayout(wallet_id: str, data: CreateLnurlPayoutData) -> lnurlpayout: +async def create_lnurlpayout(wallet_id: str, admin_key: str, data: CreateLnurlPayoutData) -> lnurlpayout: lnurlpayout_id = urlsafe_short_hash() await db.execute( """ - INSERT INTO lnurlpayout.lnurlpayouts (id, title, wallet, lnurlpay, threshold) + INSERT INTO lnurlpayout.lnurlpayouts (id, title, wallet, admin_key, lnurlpay, threshold) VALUES (?, ?, ?, ?, ?) """, - (lnurlpayout_id, data.title, wallet_id, data.lnurlpay, data.threshold), + (lnurlpayout_id, data.title, wallet_id, admin_key, data.lnurlpay, data.threshold), ) lnurlpayout = await get_lnurlpayout(lnurlpayout_id) diff --git a/lnbits/extensions/lnurlpayout/migrations.py b/lnbits/extensions/lnurlpayout/migrations.py index 4023f095d..6af047910 100644 --- a/lnbits/extensions/lnurlpayout/migrations.py +++ b/lnbits/extensions/lnurlpayout/migrations.py @@ -8,6 +8,7 @@ async def m001_initial(db): id TEXT PRIMARY KEY, title TEXT NOT NULL, wallet TEXT NOT NULL, + admin_key TEXT NOT NULL, lnurlpay TEXT NOT NULL, threshold INT NOT NULL ); diff --git a/lnbits/extensions/lnurlpayout/models.py b/lnbits/extensions/lnurlpayout/models.py index b1e163a3c..e4bc7bcef 100644 --- a/lnbits/extensions/lnurlpayout/models.py +++ b/lnbits/extensions/lnurlpayout/models.py @@ -11,5 +11,6 @@ class lnurlpayout(BaseModel): id: str title: str wallet: str + admin_key: str lnurlpay: str threshold: str diff --git a/lnbits/extensions/lnurlpayout/tasks.py b/lnbits/extensions/lnurlpayout/tasks.py index 0e1cdffb3..cf4e3b246 100644 --- a/lnbits/extensions/lnurlpayout/tasks.py +++ b/lnbits/extensions/lnurlpayout/tasks.py @@ -25,10 +25,13 @@ async def on_invoice_paid(payment: Payment) -> None: lnurlpayout_link = await get_lnurlpayout_from_wallet(payment.wallet_id) print(lnurlpayout_link) if lnurlpayout_link: + print("poo11") # Check the wallet balance is more than the threshold - wallet = await api_wallet(payment.wallet_id) + wallet = await api_wallet(lnurlpayout_link.admin_key) + print("poo1") if wallet.balance + (wallet.balance/100*2) < lnurlpayout_link.threshold: return + print("poo2") # Get the invoice from the LNURL to pay async with httpx.AsyncClient() as client: try: diff --git a/lnbits/extensions/lnurlpayout/templates/lnurlpayout/_api_docs.html b/lnbits/extensions/lnurlpayout/templates/lnurlpayout/_api_docs.html index 1ccc5d0da..7febea44c 100644 --- a/lnbits/extensions/lnurlpayout/templates/lnurlpayout/_api_docs.html +++ b/lnbits/extensions/lnurlpayout/templates/lnurlpayout/_api_docs.html @@ -20,8 +20,8 @@ [<lnurlpayout_object>, ...]
Curl example
curl -X GET {{ request.base_url }}api/v1/lnurlpayouts -H "X-Api-Key: - <invoice_key>" + >curl -X GET {{ request.base_url }}lnurlpayout/api/v1/lnurlpayouts -H + "X-Api-Key: <invoice_key>" @@ -53,9 +53,9 @@ >
Curl example
curl -X POST {{ request.base_url }}api/v1/lnurlpayouts -d '{"name": - <string>, "currency": <string>}' -H "Content-type: - application/json" -H "X-Api-Key: <admin_key>" + >curl -X POST {{ request.base_url }}lnurlpayout/api/v1/lnurlpayouts -d + '{"name": <string>, "currency": <string>}' -H + "Content-type: application/json" -H "X-Api-Key: <admin_key>" @@ -66,7 +66,6 @@ dense expand-separator label="Delete a lnurlpayout" - class="q-pb-md" > @@ -81,8 +80,37 @@
Curl example
curl -X DELETE {{ request.base_url - }}api/v1/lnurlpayouts/<lnurlpayout_id> -H "X-Api-Key: - <admin_key>" + }}lnurlpayout/api/v1/lnurlpayouts/<lnurlpayout_id> -H + "X-Api-Key: <admin_key>" + +
+
+ + + + + GET + /lnurlpayout/api/v1/lnurlpayouts/<lnurlpayout_id> +
Headers
+ {"X-Api-Key": <invoice_key>}
+
Body (application/json)
+
+ Returns 200 OK (application/json) +
+ [<lnurlpayout_object>, ...] +
Curl example
+ curl -X GET {{ request.base_url + }}lnurlpayout/api/v1/lnurlpayouts/<lnurlpayout_id> -H + "X-Api-Key: <invoice_key>"
diff --git a/lnbits/extensions/lnurlpayout/templates/lnurlpayout/index.html b/lnbits/extensions/lnurlpayout/templates/lnurlpayout/index.html index e29370608..ad43add15 100644 --- a/lnbits/extensions/lnurlpayout/templates/lnurlpayout/index.html +++ b/lnbits/extensions/lnurlpayout/templates/lnurlpayout/index.html @@ -157,6 +157,7 @@ lnurlpayouts: [], lnurlpayoutsTable: { columns: [ + {name: 'id', align: 'left', label: 'ID', field: 'id'}, {name: 'title', align: 'left', label: 'Title', field: 'title'}, {name: 'wallet', align: 'left', label: 'Wallet', field: 'wallet'}, { diff --git a/lnbits/extensions/lnurlpayout/views_api.py b/lnbits/extensions/lnurlpayout/views_api.py index 7b893597d..dda7142d5 100644 --- a/lnbits/extensions/lnurlpayout/views_api.py +++ b/lnbits/extensions/lnurlpayout/views_api.py @@ -39,7 +39,7 @@ async def api_lnurlpayout_create( if str(url["domain"])[0:4] != "http": raise HTTPException(status_code=HTTPStatus.FORBIDDEN, detail="Not valid LNURL") return - lnurlpayout = await create_lnurlpayout(wallet_id=wallet.wallet.id, data=data) + lnurlpayout = await create_lnurlpayout(wallet_id=wallet.wallet.id, admin_key=wallet.admin_key, data=data) if not lnurlpayout: raise HTTPException(status_code=HTTPStatus.FORBIDDEN, detail="Failed to save LNURLPayout") return @@ -67,10 +67,9 @@ async def api_lnurlpayout_check( lnurlpayout_id: str, wallet: WalletTypeInfo = Depends(get_key_type) ): lnurlpayout = await get_lnurlpayout(lnurlpayout_id) - payments = get_payments( - wallet_id=lnurlpayout.wallet_id, complete=True, pending=False, outgoing=True, incoming=True + payments = await get_payments( + wallet_id=lnurlpayout.wallet, complete=True, pending=False, outgoing=True, incoming=True ) print(payments[0]) - result = on_invoice_paid(payments[0].id) - wallet_ids = [wallet.wallet.id] + result = await on_invoice_paid(payments[0]) return \ No newline at end of file