Browse Source

Updated requests

fee_issues
Arc 5 years ago
committed by GitHub
parent
commit
f765163486
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 68
      lnbits/wallets/opennode.py

68
lnbits/wallets/opennode.py

@ -1,9 +1,9 @@
from requests import Response, get, post from requests import Response, get, post
from flask import jsonify
from .base import InvoiceResponse, TxStatus, Wallet from .base import InvoiceResponse, TxStatus, Wallet
import json
class OpenNodeWallet(Wallet):
class OpennodeWallet(Wallet):
"""https://api.lightning.community/rest/index.html#lnd-rest-api-reference""" """https://api.lightning.community/rest/index.html#lnd-rest-api-reference"""
def __init__(self, *, endpoint: str, admin_key: str, invoice_key: str): def __init__(self, *, endpoint: str, admin_key: str, invoice_key: str):
@ -11,8 +11,6 @@ class OpennodeWallet(Wallet):
self.auth_admin = {"Authorization": admin_key} self.auth_admin = {"Authorization": admin_key}
self.auth_invoice = {"Authorization": invoice_key} self.auth_invoice = {"Authorization": invoice_key}
def create_invoice(self, amount: int, memo: str = "") -> InvoiceResponse: def create_invoice(self, amount: int, memo: str = "") -> InvoiceResponse:
payment_hash, payment_request = None, None payment_hash, payment_request = None, None
r = post( r = post(
@ -22,54 +20,40 @@ class OpennodeWallet(Wallet):
) )
if r.ok: if r.ok:
data = r.json() data = r.json()
payment_hash, payment_request = data["data"]["id"], data["data"]["lightning_invoice"]["payreq"] payment_hash, payment_request = data['data']['id'], data["data"]["lightning_invoice"]["payreq"]
return InvoiceResponse(r, payment_hash, payment_request) return InvoiceResponse(r, payment_hash, payment_request)
def get_invoice_status(self, payment_hash: str) -> TxStatus: def pay_invoice(self, bolt11: str) -> Response:
print(f"{self.endpoint}/v1/charge/{payment_hash}") return post(
print(self.auth_invoice) url=f"{self.endpoint}/v2/withdrawals", headers=self.auth_admin, json={"type": "ln", "address": bolt11}
r = get(url=f"{self.endpoint}/v1/charge/{payment_hash}", headers=self.auth_invoice) )
data = r.json()
if r.ok:
data = r.json()
if data["data"]["status"] != "paid":
return TxStatus(r, None)
else:
return TxStatus(r, True)
else:
return TxStatus(r, False)
def pay_invoice(self, bolt11: str) -> Response: def get_invoice_status(self, payment_hash: str) -> TxStatus:
payment_hash = None
r = post(
url=f"{self.endpoint}/v2/withdrawals",
headers=self.auth_admin,
json={"type": "ln", "address": bolt11},
)
if r.ok: r = get(url=f"{self.endpoint}/v1/charge/{payment_hash}", headers=self.auth_invoice)
data = r.json()
payment_hash = data["data"]["id"]
return (r, payment_hash) data = r.json()
print(data)
print(f"{self.endpoint}/v1/charge/{payment_hash} {self.auth_invoice}")
if not r.ok:
return TxStatus(r, None)
statuses = {"processing": None, "paid": True, "unpaid": False}
return TxStatus(r, statuses[r.json()["data"]["status"]])
def get_payment_status(self, payment_hash: str) -> TxStatus: def get_payment_status(self, payment_hash: str) -> TxStatus:
r = get(url=f"{self.endpoint}/v1/withdrawal/{payment_hash}", headers=self.auth_admin) r = get(url=f"{self.endpoint}/v1/withdrawal/{payment_hash}", headers=self.auth_admin)
print(f"{self.endpoint}/v1/withdrawal/{payment_hash}") if not r.ok:
return TxStatus(r, None)
if r.ok: statuses = {"pending": None, "confirmed": True, "error": False, "failed": False}
data = r.json() return TxStatus(r, statuses[r.json()["data"]["status"]])
if ["data"]["status"] != "confirmed":
return TxStatus(r, None)
else:
return TxStatus(r, True)
else:
return TxStatus(r, False)

Loading…
Cancel
Save