feat: add get_pr_from_lnurl to lnurl services (#3286)
This commit is contained in:
@@ -7,11 +7,11 @@ from datetime import datetime, timezone
|
||||
from enum import Enum
|
||||
|
||||
from ecdsa import SECP256k1, SigningKey
|
||||
from lnurl import encode as lnurl_encode
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from lnbits.db import FilterModel
|
||||
from lnbits.helpers import url_for
|
||||
from lnbits.lnurl import encode as lnurl_encode
|
||||
from lnbits.settings import settings
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ from .funding_source import (
|
||||
get_balance_delta,
|
||||
switch_to_voidwallet,
|
||||
)
|
||||
from .lnurl import fetch_lnurl_pay_request
|
||||
from .lnurl import fetch_lnurl_pay_request, get_pr_from_lnurl
|
||||
from .notifications import enqueue_admin_notification, send_payment_notification
|
||||
from .payments import (
|
||||
calculate_fiat_amounts,
|
||||
@@ -55,6 +55,7 @@ __all__ = [
|
||||
"fetch_lnurl_pay_request",
|
||||
"get_balance_delta",
|
||||
"get_payments_daily_stats",
|
||||
"get_pr_from_lnurl",
|
||||
"pay_invoice",
|
||||
"send_payment_notification",
|
||||
"service_fee",
|
||||
|
||||
@@ -1,11 +1,35 @@
|
||||
from lnurl import LnurlPayActionResponse
|
||||
from lnurl import execute_pay_request as lnurlp
|
||||
from lnurl import (
|
||||
LnurlPayActionResponse,
|
||||
LnurlPayResponse,
|
||||
LnurlResponseException,
|
||||
execute_pay_request,
|
||||
handle,
|
||||
)
|
||||
|
||||
from lnbits.core.models import CreateLnurlPayment
|
||||
from lnbits.settings import settings
|
||||
from lnbits.utils.exchange_rates import fiat_amount_as_satoshis
|
||||
|
||||
|
||||
async def get_pr_from_lnurl(lnurl: str, amount_msat: int) -> str:
|
||||
res = await handle(lnurl, user_agent=settings.user_agent, timeout=10)
|
||||
if not isinstance(res, LnurlPayResponse):
|
||||
raise LnurlResponseException(
|
||||
"Invalid LNURL response. Expected LnurlPayResponse."
|
||||
)
|
||||
res2 = await execute_pay_request(
|
||||
res,
|
||||
msat=str(amount_msat),
|
||||
user_agent=settings.user_agent,
|
||||
timeout=10,
|
||||
)
|
||||
if not isinstance(res, LnurlPayActionResponse):
|
||||
raise LnurlResponseException(
|
||||
"Invalid LNURL pay response. Expected LnurlPayActionResponse."
|
||||
)
|
||||
return res2.pr
|
||||
|
||||
|
||||
async def fetch_lnurl_pay_request(data: CreateLnurlPayment) -> LnurlPayActionResponse:
|
||||
"""
|
||||
Pay an LNURL payment request.
|
||||
@@ -21,9 +45,9 @@ async def fetch_lnurl_pay_request(data: CreateLnurlPayment) -> LnurlPayActionRes
|
||||
else:
|
||||
amount_msat = data.amount
|
||||
|
||||
return await lnurlp(
|
||||
return await execute_pay_request(
|
||||
data.res,
|
||||
msat=str(amount_msat),
|
||||
user_agent=settings.user_agent,
|
||||
timeout=5,
|
||||
timeout=10,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user