feat: lnurl library update

follow up on https://github.com/lnbits/lnbits/pull/1864/files
This commit is contained in:
dni ⚡ 2023-12-05 15:04:28 +01:00 committed by Pavol Rusnak
parent d7257af7a0
commit ba90bc5fea
6 changed files with 17 additions and 34 deletions

View File

@ -10,12 +10,12 @@ from typing import Callable, Dict, List, Optional
from ecdsa import SECP256k1, SigningKey
from fastapi import Query
from lnurl import encode as lnurl_encode
from loguru import logger
from pydantic import BaseModel
from lnbits.db import Connection, FilterModel, FromRowModel
from lnbits.helpers import url_for
from lnbits.lnurl import encode as lnurl_encode
from lnbits.settings import settings
from lnbits.wallets import get_wallet_class
from lnbits.wallets.base import PaymentStatus

View File

@ -11,8 +11,6 @@ from bolt11 import Bolt11
from bolt11 import decode as bolt11_decode
from cryptography.hazmat.primitives import serialization
from fastapi import Depends, WebSocket
from lnurl import LnurlErrorResponse
from lnurl import decode as decode_lnurl
from loguru import logger
from py_vapid import Vapid
from py_vapid.utils import b64urlencode
@ -21,6 +19,8 @@ from lnbits.core.db import db
from lnbits.db import Connection
from lnbits.decorators import WalletTypeInfo, require_admin_key
from lnbits.helpers import url_for
from lnbits.lnurl import LnurlErrorResponse
from lnbits.lnurl import decode as decode_lnurl
from lnbits.settings import (
EditableSettings,
SuperSettings,

View File

@ -24,7 +24,7 @@ from loguru import logger
from sse_starlette.sse import EventSourceResponse
from starlette.responses import StreamingResponse
from lnbits import bolt11, lnurl
from lnbits import bolt11
from lnbits.core.db import core_app_extra, db
from lnbits.core.helpers import (
migrate_extension_database,
@ -63,6 +63,7 @@ from lnbits.extension_manager import (
get_valid_extensions,
)
from lnbits.helpers import generate_filter_params_openapi, url_for
from lnbits.lnurl import decode as lnurl_decode
from lnbits.settings import settings
from lnbits.utils.exchange_rates import (
currencies,
@ -556,7 +557,7 @@ async def api_payment(payment_hash, X_Api_Key: Optional[str] = Header(None)):
@api_router.get("/api/v1/lnurlscan/{code}")
async def api_lnurlscan(code: str, wallet: WalletTypeInfo = Depends(get_key_type)):
try:
url = lnurl.decode(code)
url = str(lnurl_decode(code))
domain = urlparse(url).netloc
except Exception:
# parse internet identifier (user@domain.com)
@ -674,7 +675,7 @@ async def api_payments_decode(data: DecodePayment) -> JSONResponse:
payment_str = data.data
try:
if payment_str[:5] == "LNURL":
url = lnurl.decode(payment_str)
url = str(lnurl_decode(payment_str))
return JSONResponse({"domain": url})
else:
invoice = bolt11.decode(payment_str)

View File

@ -1,20 +1 @@
from typing import Union
from bech32 import bech32_decode, bech32_encode, convertbits
from fastapi.datastructures import URL
def decode(lnurl: str) -> str:
hrp, data = bech32_decode(lnurl)
assert hrp
assert data
bech32_data = convertbits(data, 5, 8, False)
assert bech32_data
return bytes(bech32_data).decode()
def encode(url: Union[str, URL]) -> str:
bech32_data = convertbits(str(url).encode(), 8, 5, True)
assert bech32_data
lnurl = bech32_encode("lnurl", bech32_data)
return lnurl.upper()
from lnurl import LnurlErrorResponse, decode, encode, handle # noqa: F401

15
poetry.lock generated
View File

@ -1109,18 +1109,19 @@ rediscluster = ["redis (>=4.2.0,!=4.5.2,!=4.5.3)"]
[[package]]
name = "lnurl"
version = "0.3.6"
version = "0.4.2"
description = "LNURL implementation for Python."
optional = false
python-versions = ">=3.6"
python-versions = ">=3.9,<4.0"
files = [
{file = "lnurl-0.3.6-py3-none-any.whl", hash = "sha256:579982fd8c4d25bc84c61c74ec45cb7999fa1fa2426f5d5aeb0160ba333b9c92"},
{file = "lnurl-0.3.6.tar.gz", hash = "sha256:8af07460115a48f3122a5a9c9a6062bee3897d5f6ab4c9a60f6561a83a8234f6"},
{file = "lnurl-0.4.2-py3-none-any.whl", hash = "sha256:93f79ae7e0b0c66fed5b29ac1520e85e3e2c8648561a4b42974f0b7bffd34d84"},
{file = "lnurl-0.4.2.tar.gz", hash = "sha256:c5e708b255d5333a0c08ceffe90ae4be6d2d09eb51dc8c35d19d8aa4cb21842a"},
]
[package.dependencies]
bech32 = "*"
pydantic = "*"
bech32 = ">=1.2.0,<2.0.0"
pydantic = ">=1,<2"
requests = ">=2.31.0,<3.0.0"
[[package]]
name = "loguru"
@ -2654,4 +2655,4 @@ liquid = ["wallycore"]
[metadata]
lock-version = "2.0"
python-versions = "^3.10 | ^3.9"
content-hash = "95ad6885f070793369450a82763ea8e4f92926d9bee02f81758636b28db55e76"
content-hash = "6b44b6f3fc338be751d3c647964ae2138e928dbe479670dd04a2f274a5b03cc0"

View File

@ -12,7 +12,7 @@ ecdsa = "0.18.0"
fastapi = "0.103.1"
httpx = "0.25.0"
jinja2 = "3.0.1"
lnurl = "0.3.6"
lnurl = "0.4.2"
psycopg2-binary = "2.9.7"
pydantic = "1.10.9"
pyqrcode = "1.2.1"