From 9a18720a96f483eac9db626516967e780aac2edf Mon Sep 17 00:00:00 2001 From: Stefan Stammberger Date: Sun, 10 Oct 2021 18:49:41 +0200 Subject: [PATCH] fix: embeddable img link in withdraw extension --- lnbits/extensions/withdraw/views.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lnbits/extensions/withdraw/views.py b/lnbits/extensions/withdraw/views.py index 9bdaee45b..eeacb36e7 100644 --- a/lnbits/extensions/withdraw/views.py +++ b/lnbits/extensions/withdraw/views.py @@ -10,7 +10,7 @@ from fastapi.params import Depends from fastapi.templating import Jinja2Templates from starlette.exceptions import HTTPException -from starlette.responses import HTMLResponse +from starlette.responses import HTMLResponse, StreamingResponse from lnbits.core.models import User templates = Jinja2Templates(directory="templates") @@ -36,7 +36,7 @@ async def display(request: Request, link_id): return withdraw_renderer().TemplateResponse("withdraw/display.html", {"request":request,"link":{**link.dict(), "lnurl": link.lnurl(request)}, "unique":True}) -@withdraw_ext.get("/img/{link_id}", response_class=HTMLResponse) +@withdraw_ext.get("/img/{link_id}", response_class=StreamingResponse) async def img(request: Request, link_id): link = await get_withdraw_link(link_id, 0) if not link: @@ -50,16 +50,19 @@ async def img(request: Request, link_id): print(qr) stream = BytesIO() qr.svg(stream, scale=3) - return ( - stream.getvalue(), - 200, - { + stream.seek(0) + + async def _generator(stream: BytesIO): + yield stream.getvalue() + + return StreamingResponse( + _generator(stream), + headers={ "Content-Type": "image/svg+xml", "Cache-Control": "no-cache, no-store, must-revalidate", "Pragma": "no-cache", "Expires": "0", - }, - ) + }) @withdraw_ext.get("/print/{link_id}", response_class=HTMLResponse)