mirror of
https://github.com/lnbits/lnbits.git
synced 2025-09-20 04:21:20 +02:00
Fix Bleskomat extension for FastAPI branch
This commit is contained in:
@@ -35,8 +35,8 @@ def generate_bleskomat_lnurl_secret(api_key_id: str, signature: str):
|
|||||||
return m.hexdigest()
|
return m.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
def get_callback_url(request: Request):
|
def get_callback_url(req: Request):
|
||||||
return request.url_for("bleskomat.api_bleskomat_lnurl")
|
return req.url_for("bleskomat.api_bleskomat_lnurl")
|
||||||
|
|
||||||
|
|
||||||
def is_supported_lnurl_subprotocol(tag: str) -> bool:
|
def is_supported_lnurl_subprotocol(tag: str) -> bool:
|
||||||
|
@@ -25,9 +25,9 @@ from .helpers import (
|
|||||||
|
|
||||||
# Handles signed URL from Bleskomat ATMs and "action" callback of auto-generated LNURLs.
|
# Handles signed URL from Bleskomat ATMs and "action" callback of auto-generated LNURLs.
|
||||||
@bleskomat_ext.get("/u", name="bleskomat.api_bleskomat_lnurl")
|
@bleskomat_ext.get("/u", name="bleskomat.api_bleskomat_lnurl")
|
||||||
async def api_bleskomat_lnurl(request: Request):
|
async def api_bleskomat_lnurl(req: Request):
|
||||||
try:
|
try:
|
||||||
query = request.query_params
|
query = req.query_params
|
||||||
|
|
||||||
# Unshorten query if "s" is used instead of "signature".
|
# Unshorten query if "s" is used instead of "signature".
|
||||||
if "s" in query:
|
if "s" in query:
|
||||||
@@ -96,7 +96,7 @@ async def api_bleskomat_lnurl(request: Request):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Reply with LNURL response object.
|
# Reply with LNURL response object.
|
||||||
return lnurl.get_info_response_object(secret)
|
return lnurl.get_info_response_object(secret, req)
|
||||||
|
|
||||||
# No signature provided.
|
# No signature provided.
|
||||||
# Treat as "action" callback.
|
# Treat as "action" callback.
|
||||||
|
@@ -7,7 +7,7 @@ from pydantic import BaseModel, validator
|
|||||||
from starlette.requests import Request
|
from starlette.requests import Request
|
||||||
|
|
||||||
from lnbits import bolt11
|
from lnbits import bolt11
|
||||||
from lnbits.core.services import pay_invoice
|
from lnbits.core.services import pay_invoice, PaymentFailure
|
||||||
|
|
||||||
from . import db
|
from . import db
|
||||||
from .exchange_rates import exchange_rate_providers, fiat_currencies
|
from .exchange_rates import exchange_rate_providers, fiat_currencies
|
||||||
@@ -119,13 +119,13 @@ class BleskomatLnurl(BaseModel):
|
|||||||
tag = self.tag
|
tag = self.tag
|
||||||
if tag == "withdrawRequest":
|
if tag == "withdrawRequest":
|
||||||
try:
|
try:
|
||||||
payment_hash = await pay_invoice(
|
await pay_invoice(
|
||||||
wallet_id=self.wallet, payment_request=query["pr"]
|
wallet_id=self.wallet, payment_request=query["pr"]
|
||||||
)
|
)
|
||||||
|
except (ValueError, PermissionError, PaymentFailure) as e:
|
||||||
|
raise LnurlValidationError("Failed to pay invoice: " + str(e))
|
||||||
except Exception:
|
except Exception:
|
||||||
raise LnurlValidationError("Failed to pay invoice")
|
raise LnurlValidationError("Unexpected error")
|
||||||
if not payment_hash:
|
|
||||||
raise LnurlValidationError("Failed to pay invoice")
|
|
||||||
|
|
||||||
async def use(self, conn) -> bool:
|
async def use(self, conn) -> bool:
|
||||||
now = int(time.time())
|
now = int(time.time())
|
||||||
|
@@ -14,13 +14,13 @@ templates = Jinja2Templates(directory="templates")
|
|||||||
|
|
||||||
|
|
||||||
@bleskomat_ext.get("/", response_class=HTMLResponse)
|
@bleskomat_ext.get("/", response_class=HTMLResponse)
|
||||||
async def index(request: Request, user: User = Depends(check_user_exists)):
|
async def index(req: Request, user: User = Depends(check_user_exists)):
|
||||||
bleskomat_vars = {
|
bleskomat_vars = {
|
||||||
"callback_url": get_callback_url(request=request),
|
"callback_url": get_callback_url(req),
|
||||||
"exchange_rate_providers": exchange_rate_providers_serializable,
|
"exchange_rate_providers": exchange_rate_providers_serializable,
|
||||||
"fiat_currencies": fiat_currencies,
|
"fiat_currencies": fiat_currencies,
|
||||||
}
|
}
|
||||||
return bleskomat_renderer().TemplateResponse(
|
return bleskomat_renderer().TemplateResponse(
|
||||||
"bleskomat/index.html",
|
"bleskomat/index.html",
|
||||||
{"request": request, "user": user.dict(), "bleskomat_vars": bleskomat_vars},
|
{"request": req, "user": user.dict(), "bleskomat_vars": bleskomat_vars},
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user