feat: lnurl library update
follow up on https://github.com/lnbits/lnbits/pull/1864/files
This commit is contained in:
parent
d7257af7a0
commit
ba90bc5fea
6 changed files with 17 additions and 34 deletions
|
|
@ -10,12 +10,12 @@ from typing import Callable, Dict, List, Optional
|
||||||
|
|
||||||
from ecdsa import SECP256k1, SigningKey
|
from ecdsa import SECP256k1, SigningKey
|
||||||
from fastapi import Query
|
from fastapi import Query
|
||||||
from lnurl import encode as lnurl_encode
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from lnbits.db import Connection, FilterModel, FromRowModel
|
from lnbits.db import Connection, FilterModel, FromRowModel
|
||||||
from lnbits.helpers import url_for
|
from lnbits.helpers import url_for
|
||||||
|
from lnbits.lnurl import encode as lnurl_encode
|
||||||
from lnbits.settings import settings
|
from lnbits.settings import settings
|
||||||
from lnbits.wallets import get_wallet_class
|
from lnbits.wallets import get_wallet_class
|
||||||
from lnbits.wallets.base import PaymentStatus
|
from lnbits.wallets.base import PaymentStatus
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,6 @@ from bolt11 import Bolt11
|
||||||
from bolt11 import decode as bolt11_decode
|
from bolt11 import decode as bolt11_decode
|
||||||
from cryptography.hazmat.primitives import serialization
|
from cryptography.hazmat.primitives import serialization
|
||||||
from fastapi import Depends, WebSocket
|
from fastapi import Depends, WebSocket
|
||||||
from lnurl import LnurlErrorResponse
|
|
||||||
from lnurl import decode as decode_lnurl
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from py_vapid import Vapid
|
from py_vapid import Vapid
|
||||||
from py_vapid.utils import b64urlencode
|
from py_vapid.utils import b64urlencode
|
||||||
|
|
@ -21,6 +19,8 @@ from lnbits.core.db import db
|
||||||
from lnbits.db import Connection
|
from lnbits.db import Connection
|
||||||
from lnbits.decorators import WalletTypeInfo, require_admin_key
|
from lnbits.decorators import WalletTypeInfo, require_admin_key
|
||||||
from lnbits.helpers import url_for
|
from lnbits.helpers import url_for
|
||||||
|
from lnbits.lnurl import LnurlErrorResponse
|
||||||
|
from lnbits.lnurl import decode as decode_lnurl
|
||||||
from lnbits.settings import (
|
from lnbits.settings import (
|
||||||
EditableSettings,
|
EditableSettings,
|
||||||
SuperSettings,
|
SuperSettings,
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ from loguru import logger
|
||||||
from sse_starlette.sse import EventSourceResponse
|
from sse_starlette.sse import EventSourceResponse
|
||||||
from starlette.responses import StreamingResponse
|
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.db import core_app_extra, db
|
||||||
from lnbits.core.helpers import (
|
from lnbits.core.helpers import (
|
||||||
migrate_extension_database,
|
migrate_extension_database,
|
||||||
|
|
@ -63,6 +63,7 @@ from lnbits.extension_manager import (
|
||||||
get_valid_extensions,
|
get_valid_extensions,
|
||||||
)
|
)
|
||||||
from lnbits.helpers import generate_filter_params_openapi, url_for
|
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.settings import settings
|
||||||
from lnbits.utils.exchange_rates import (
|
from lnbits.utils.exchange_rates import (
|
||||||
currencies,
|
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}")
|
@api_router.get("/api/v1/lnurlscan/{code}")
|
||||||
async def api_lnurlscan(code: str, wallet: WalletTypeInfo = Depends(get_key_type)):
|
async def api_lnurlscan(code: str, wallet: WalletTypeInfo = Depends(get_key_type)):
|
||||||
try:
|
try:
|
||||||
url = lnurl.decode(code)
|
url = str(lnurl_decode(code))
|
||||||
domain = urlparse(url).netloc
|
domain = urlparse(url).netloc
|
||||||
except Exception:
|
except Exception:
|
||||||
# parse internet identifier (user@domain.com)
|
# parse internet identifier (user@domain.com)
|
||||||
|
|
@ -674,7 +675,7 @@ async def api_payments_decode(data: DecodePayment) -> JSONResponse:
|
||||||
payment_str = data.data
|
payment_str = data.data
|
||||||
try:
|
try:
|
||||||
if payment_str[:5] == "LNURL":
|
if payment_str[:5] == "LNURL":
|
||||||
url = lnurl.decode(payment_str)
|
url = str(lnurl_decode(payment_str))
|
||||||
return JSONResponse({"domain": url})
|
return JSONResponse({"domain": url})
|
||||||
else:
|
else:
|
||||||
invoice = bolt11.decode(payment_str)
|
invoice = bolt11.decode(payment_str)
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1 @@
|
||||||
from typing import Union
|
from lnurl import LnurlErrorResponse, decode, encode, handle # noqa: F401
|
||||||
|
|
||||||
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()
|
|
||||||
|
|
|
||||||
15
poetry.lock
generated
15
poetry.lock
generated
|
|
@ -1109,18 +1109,19 @@ rediscluster = ["redis (>=4.2.0,!=4.5.2,!=4.5.3)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lnurl"
|
name = "lnurl"
|
||||||
version = "0.3.6"
|
version = "0.4.2"
|
||||||
description = "LNURL implementation for Python."
|
description = "LNURL implementation for Python."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.9,<4.0"
|
||||||
files = [
|
files = [
|
||||||
{file = "lnurl-0.3.6-py3-none-any.whl", hash = "sha256:579982fd8c4d25bc84c61c74ec45cb7999fa1fa2426f5d5aeb0160ba333b9c92"},
|
{file = "lnurl-0.4.2-py3-none-any.whl", hash = "sha256:93f79ae7e0b0c66fed5b29ac1520e85e3e2c8648561a4b42974f0b7bffd34d84"},
|
||||||
{file = "lnurl-0.3.6.tar.gz", hash = "sha256:8af07460115a48f3122a5a9c9a6062bee3897d5f6ab4c9a60f6561a83a8234f6"},
|
{file = "lnurl-0.4.2.tar.gz", hash = "sha256:c5e708b255d5333a0c08ceffe90ae4be6d2d09eb51dc8c35d19d8aa4cb21842a"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
bech32 = "*"
|
bech32 = ">=1.2.0,<2.0.0"
|
||||||
pydantic = "*"
|
pydantic = ">=1,<2"
|
||||||
|
requests = ">=2.31.0,<3.0.0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "loguru"
|
name = "loguru"
|
||||||
|
|
@ -2654,4 +2655,4 @@ liquid = ["wallycore"]
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.10 | ^3.9"
|
python-versions = "^3.10 | ^3.9"
|
||||||
content-hash = "95ad6885f070793369450a82763ea8e4f92926d9bee02f81758636b28db55e76"
|
content-hash = "6b44b6f3fc338be751d3c647964ae2138e928dbe479670dd04a2f274a5b03cc0"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ ecdsa = "0.18.0"
|
||||||
fastapi = "0.103.1"
|
fastapi = "0.103.1"
|
||||||
httpx = "0.25.0"
|
httpx = "0.25.0"
|
||||||
jinja2 = "3.0.1"
|
jinja2 = "3.0.1"
|
||||||
lnurl = "0.3.6"
|
lnurl = "0.4.2"
|
||||||
psycopg2-binary = "2.9.7"
|
psycopg2-binary = "2.9.7"
|
||||||
pydantic = "1.10.9"
|
pydantic = "1.10.9"
|
||||||
pyqrcode = "1.2.1"
|
pyqrcode = "1.2.1"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue