diff --git a/lnbits/extensions/copilot/views.py b/lnbits/extensions/copilot/views.py index 17e05081..ff0a5a93 100644 --- a/lnbits/extensions/copilot/views.py +++ b/lnbits/extensions/copilot/views.py @@ -1,23 +1,15 @@ -from http import HTTPStatus from typing import List -import httpx -from collections import defaultdict -from lnbits.decorators import check_user_exists -from .crud import get_copilot -from functools import wraps +from fastapi import Request, WebSocket, WebSocketDisconnect +from fastapi.params import Depends +from fastapi.templating import Jinja2Templates +from starlette.responses import HTMLResponse # type: ignore +from lnbits.core.models import User from lnbits.decorators import check_user_exists from . import copilot_ext, copilot_renderer -from fastapi import FastAPI, Request, WebSocket, WebSocketDisconnect -from fastapi.params import Depends -from fastapi.templating import Jinja2Templates -from fastapi.param_functions import Query -from starlette.exceptions import HTTPException -from starlette.responses import HTMLResponse, JSONResponse # type: ignore -from lnbits.core.models import User -import base64 +from .crud import get_copilot templates = Jinja2Templates(directory="templates") diff --git a/lnbits/extensions/events/views_api.py b/lnbits/extensions/events/views_api.py index 4040babb..e14fc276 100644 --- a/lnbits/extensions/events/views_api.py +++ b/lnbits/extensions/events/views_api.py @@ -5,8 +5,8 @@ from fastapi.params import Depends from starlette.exceptions import HTTPException from starlette.requests import Request -from lnbits.core.crud import get_user, get_wallet -from lnbits.core.services import check_invoice_status, create_invoice +from lnbits.core.crud import get_user +from lnbits.core.services import create_invoice from lnbits.core.views.api import api_payment from lnbits.decorators import WalletTypeInfo, get_key_type from lnbits.extensions.events.models import CreateEvent, CreateTicket @@ -33,7 +33,6 @@ from .crud import ( @events_ext.get("/api/v1/events") async def api_events( - r: Request, all_wallets: bool = Query(False), wallet: WalletTypeInfo = Depends(get_key_type), ): @@ -89,7 +88,6 @@ async def api_form_delete(event_id, wallet: WalletTypeInfo = Depends(get_key_typ @events_ext.get("/api/v1/tickets") async def api_tickets( - r: Request, all_wallets: bool = Query(False), wallet: WalletTypeInfo = Depends(get_key_type), ): diff --git a/lnbits/extensions/jukebox/__init__.py b/lnbits/extensions/jukebox/__init__.py index 0d4524a7..702a6c67 100644 --- a/lnbits/extensions/jukebox/__init__.py +++ b/lnbits/extensions/jukebox/__init__.py @@ -1,7 +1,8 @@ import asyncio -from fastapi import APIRouter, FastAPI + +from fastapi import APIRouter from fastapi.staticfiles import StaticFiles -from starlette.routing import Mount + from lnbits.db import Database from lnbits.helpers import template_renderer from lnbits.tasks import catch_everything_and_restart @@ -23,9 +24,9 @@ def jukebox_renderer(): return template_renderer(["lnbits/extensions/jukebox/templates"]) -from .views_api import * # noqa -from .views import * # noqa from .tasks import wait_for_paid_invoices +from .views import * # noqa +from .views_api import * # noqa def jukebox_start(): diff --git a/lnbits/extensions/jukebox/crud.py b/lnbits/extensions/jukebox/crud.py index 3f8ce96c..14dc4760 100644 --- a/lnbits/extensions/jukebox/crud.py +++ b/lnbits/extensions/jukebox/crud.py @@ -1,9 +1,10 @@ from typing import List, Optional -from . import db -from .models import Jukebox, JukeboxPayment, CreateJukeLinkData, CreateJukeboxPayment from lnbits.helpers import urlsafe_short_hash +from . import db +from .models import CreateJukeboxPayment, CreateJukeLinkData, Jukebox, JukeboxPayment + async def create_jukebox( data: CreateJukeLinkData, inkey: Optional[str] = "" @@ -40,8 +41,6 @@ async def update_jukebox( q = ", ".join([f"{field[0]} = ?" for field in data]) items = [f"{field[1]}" for field in data] items.append(juke_id) - print(q) - print(items) await db.execute(f"UPDATE jukebox.jukebox SET {q} WHERE id = ?", (items)) row = await db.fetchone("SELECT * FROM jukebox.jukebox WHERE id = ?", (juke_id,)) return Jukebox(**row) if row else None @@ -61,7 +60,6 @@ async def get_jukeboxs(user: str) -> List[Jukebox]: rows = await db.fetchall("SELECT * FROM jukebox.jukebox WHERE user = ?", (user,)) for row in rows: if row.sp_playlists == None: - print("cunt") await delete_jukebox(row.id) rows = await db.fetchall("SELECT * FROM jukebox.jukebox WHERE user = ?", (user,)) diff --git a/lnbits/extensions/jukebox/tasks.py b/lnbits/extensions/jukebox/tasks.py index 52366bea..02241c7b 100644 --- a/lnbits/extensions/jukebox/tasks.py +++ b/lnbits/extensions/jukebox/tasks.py @@ -1,12 +1,9 @@ import asyncio -import json -import httpx -from lnbits.core import db as core_db from lnbits.core.models import Payment from lnbits.tasks import register_invoice_listener -from .crud import get_jukebox, update_jukebox_payment +from .crud import update_jukebox_payment async def wait_for_paid_invoices(): diff --git a/lnbits/extensions/jukebox/views.py b/lnbits/extensions/jukebox/views.py index dec65eb9..56774394 100644 --- a/lnbits/extensions/jukebox/views.py +++ b/lnbits/extensions/jukebox/views.py @@ -7,7 +7,7 @@ from starlette.exceptions import HTTPException from starlette.responses import HTMLResponse from lnbits.core.models import User -from lnbits.decorators import WalletTypeInfo, check_user_exists, get_key_type +from lnbits.decorators import check_user_exists from . import jukebox_ext, jukebox_renderer from .crud import get_jukebox diff --git a/lnbits/extensions/jukebox/views_api.py b/lnbits/extensions/jukebox/views_api.py index dc9e9719..8b08f9bc 100644 --- a/lnbits/extensions/jukebox/views_api.py +++ b/lnbits/extensions/jukebox/views_api.py @@ -9,10 +9,9 @@ from fastapi.params import Depends from starlette.exceptions import HTTPException from starlette.responses import HTMLResponse # type: ignore -from lnbits.core.crud import get_wallet +from lnbits.core.services import create_invoice from lnbits.core.views.api import api_payment -from lnbits.core.services import check_invoice_status, create_invoice -from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key +from lnbits.decorators import WalletTypeInfo, require_admin_key from . import jukebox_ext from .crud import ( @@ -75,7 +74,6 @@ async def api_check_credentials_callbac( async def api_check_credentials_check( juke_id: str = Query(None), wallet: WalletTypeInfo = Depends(require_admin_key) ): - print(juke_id) jukebox = await get_jukebox(juke_id) return jukebox @@ -238,7 +236,7 @@ async def api_get_jukebox_device_check( async def api_get_jukebox_invoice(juke_id, song_id): try: jukebox = await get_jukebox(juke_id) - print(jukebox) + except: raise HTTPException(status_code=HTTPStatus.FORBIDDEN, detail="No jukebox") try: @@ -269,8 +267,7 @@ async def api_get_jukebox_invoice(juke_id, song_id): invoice=invoice[1], payment_hash=payment_hash, juke_id=juke_id, song_id=song_id ) jukebox_payment = await create_jukebox_payment(data) - print(data) - + return data diff --git a/lnbits/extensions/livestream/tasks.py b/lnbits/extensions/livestream/tasks.py index 2dd9d539..c4cc3b57 100644 --- a/lnbits/extensions/livestream/tasks.py +++ b/lnbits/extensions/livestream/tasks.py @@ -19,12 +19,6 @@ async def wait_for_paid_invoices(): await on_invoice_paid(payment) -# async def register_listeners(): -# invoice_paid_chan_send, invoice_paid_chan_recv = trio.open_memory_channel(2) -# register_invoice_listener(invoice_paid_chan_send) -# await wait_for_paid_invoices(invoice_paid_chan_recv) - - async def on_invoice_paid(payment: Payment) -> None: if "livestream" != payment.extra.get("tag"): # not a livestream invoice diff --git a/lnbits/extensions/livestream/views.py b/lnbits/extensions/livestream/views.py index ec03c1c6..f6afc1fc 100644 --- a/lnbits/extensions/livestream/views.py +++ b/lnbits/extensions/livestream/views.py @@ -24,7 +24,6 @@ async def index(request: Request, user: User = Depends(check_user_exists)): @livestream_ext.get("/track/{track_id}", name="livestream.track_redirect_download") async def track_redirect_download(track_id, p: str = Query(...)): - print("BOO", track_id, p) payment_hash = p track = await get_track(track_id) ls = await get_livestream_by_track(track_id) diff --git a/lnbits/extensions/livestream/views_api.py b/lnbits/extensions/livestream/views_api.py index ee8ffac1..8a69ed3c 100644 --- a/lnbits/extensions/livestream/views_api.py +++ b/lnbits/extensions/livestream/views_api.py @@ -29,7 +29,7 @@ async def api_livestream_from_wallet( ls = await get_or_create_livestream_by_wallet(g.wallet.id) tracks = await get_tracks(ls.id) producers = await get_producers(ls.id) - print("INIT", ls, tracks, producers) + try: return { **ls.dict(), diff --git a/lnbits/extensions/lnaddress/crud.py b/lnbits/extensions/lnaddress/crud.py index 5479757f..5c5b5bdd 100644 --- a/lnbits/extensions/lnaddress/crud.py +++ b/lnbits/extensions/lnaddress/crud.py @@ -44,6 +44,7 @@ async def update_domain(domain_id: str, **kwargs) -> Domains: return Domains(**row) async def delete_domain(domain_id: str) -> None: + await db.execute("DELETE FROM lnaddress.domain WHERE id = ?", (domain_id,)) async def get_domain(domain_id: str) -> Optional[Domains]: @@ -103,10 +104,9 @@ async def get_address(address_id: str) -> Optional[Addresses]: async def get_address_by_username(username: str, domain: str) -> Optional[Addresses]: row = await db.fetchone( "SELECT a.* FROM lnaddress.address AS a INNER JOIN lnaddress.domain AS d ON a.username = ? AND d.domain = ?", - # "SELECT * FROM lnaddress.address WHERE username = ? AND domain = ?", (username, domain,), ) - print("ADD", row) + return Addresses(**row) if row else None async def delete_address(address_id: str) -> None: @@ -121,7 +121,6 @@ async def get_addresses(wallet_ids: Union[str, List[str]]) -> List[Addresses]: f"SELECT * FROM lnaddress.address WHERE wallet IN ({q})", (*wallet_ids,), ) - print([Addresses(**row) for row in rows]) return [Addresses(**row) for row in rows] async def set_address_paid(payment_hash: str) -> Addresses: diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py index b0cd0195..570eb231 100644 --- a/lnbits/extensions/lnaddress/lnurl.py +++ b/lnbits/extensions/lnaddress/lnurl.py @@ -47,21 +47,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)): ).dict() amount_received = amount - # min = 1000 - # max = 1000000000 - - # if amount_received < min: - # return LnurlErrorResponse( - # reason=f"Amount {amount_received} is smaller than minimum." - # ).dict() - - # elif amount_received > max: - # return jsonify( - # LnurlErrorResponse( - # reason=f"Amount {amount_received} is greater than maximum." - # ).dict() - # ) - + domain = await get_domain(address.domain) base_url = address.wallet_endpoint[:-1] if address.wallet_endpoint.endswith('/') else address.wallet_endpoint diff --git a/lnbits/extensions/lnaddress/migrations.py b/lnbits/extensions/lnaddress/migrations.py index 4c8b8be1..414f7a88 100644 --- a/lnbits/extensions/lnaddress/migrations.py +++ b/lnbits/extensions/lnaddress/migrations.py @@ -36,6 +36,3 @@ async def m002_addresses(db): ); """ ) - -# async def m003_create_unique_indexes(db): -# await db.execute("CREATE UNIQUE INDEX IF NOT EXISTS address_at_domain ON lnaddress.address (domain, username);") diff --git a/lnbits/extensions/lnaddress/views_api.py b/lnbits/extensions/lnaddress/views_api.py index 6c067541..d5324fdb 100644 --- a/lnbits/extensions/lnaddress/views_api.py +++ b/lnbits/extensions/lnaddress/views_api.py @@ -159,7 +159,6 @@ async def api_lnaddress_make_address(domain_id, data: CreateAddress, user=None, ) if user: - print("USER", user, domain.domain) address = await get_address_by_username(user, domain.domain) if not address: diff --git a/lnbits/extensions/lnticket/__init__.py b/lnbits/extensions/lnticket/__init__.py index c1f382eb..b59444a8 100644 --- a/lnbits/extensions/lnticket/__init__.py +++ b/lnbits/extensions/lnticket/__init__.py @@ -11,7 +11,6 @@ db = Database("ext_lnticket") lnticket_ext: APIRouter = APIRouter( prefix="/lnticket", tags=["LNTicket"] - # "lnticket", __name__, static_folder="static", template_folder="templates" ) @@ -19,9 +18,9 @@ def lnticket_renderer(): return template_renderer(["lnbits/extensions/lnticket/templates"]) -from .views_api import * # noqa -from .views import * # noqa from .tasks import wait_for_paid_invoices +from .views import * # noqa +from .views_api import * # noqa def lnticket_start(): diff --git a/lnbits/extensions/lnticket/tasks.py b/lnbits/extensions/lnticket/tasks.py index 89e5ebf5..2d79fb51 100644 --- a/lnbits/extensions/lnticket/tasks.py +++ b/lnbits/extensions/lnticket/tasks.py @@ -27,5 +27,3 @@ async def on_invoice_paid(payment: Payment) -> None: await payment.set_pending(False) await set_ticket_paid(payment.payment_hash) - _ticket = await get_ticket(payment.checking_id) - print("ticket", _ticket) diff --git a/lnbits/extensions/lnticket/views.py b/lnbits/extensions/lnticket/views.py index 85be27b5..9c11c79e 100644 --- a/lnbits/extensions/lnticket/views.py +++ b/lnbits/extensions/lnticket/views.py @@ -1,25 +1,23 @@ +from http import HTTPStatus + +from fastapi import Request from fastapi.param_functions import Depends +from fastapi.params import Depends +from fastapi.templating import Jinja2Templates from starlette.exceptions import HTTPException from starlette.responses import HTMLResponse -from lnbits.core.models import User + from lnbits.core.crud import get_wallet +from lnbits.core.models import User from lnbits.decorators import check_user_exists -from http import HTTPStatus from . import lnticket_ext, lnticket_renderer from .crud import get_form -from fastapi import FastAPI, Request -from fastapi.params import Depends -from fastapi.templating import Jinja2Templates templates = Jinja2Templates(directory="templates") @lnticket_ext.get("/", response_class=HTMLResponse) -# not needed as we automatically get the user with the given ID -# If no user with this ID is found, an error is raised -# @validate_uuids(["usr"], required=True) -# @check_user_exists() async def index(request: Request, user: User = Depends(check_user_exists)): return lnticket_renderer().TemplateResponse( "lnticket/index.html", {"request": request, "user": user.dict()} @@ -33,7 +31,6 @@ async def display(request: Request, form_id): raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="LNTicket does not exist." ) - # abort(HTTPStatus.NOT_FOUND, "LNTicket does not exist.") wallet = await get_wallet(form.wallet) diff --git a/lnbits/extensions/lnticket/views_api.py b/lnbits/extensions/lnticket/views_api.py index a83a2588..f9e272f3 100644 --- a/lnbits/extensions/lnticket/views_api.py +++ b/lnbits/extensions/lnticket/views_api.py @@ -1,17 +1,13 @@ import re from http import HTTPStatus -from typing import List from fastapi import Query from fastapi.params import Depends -from pydantic import BaseModel from starlette.exceptions import HTTPException -from starlette.requests import Request -from starlette.responses import HTMLResponse, JSONResponse # type: ignore +from lnbits.core.crud import get_user +from lnbits.core.services import create_invoice from lnbits.core.views.api import api_payment -from lnbits.core.crud import get_user, get_wallet -from lnbits.core.services import check_invoice_status, create_invoice from lnbits.decorators import WalletTypeInfo, get_key_type from lnbits.extensions.lnticket.models import CreateFormData, CreateTicketData @@ -34,7 +30,6 @@ from .crud import ( @lnticket_ext.get("/api/v1/forms") async def api_forms_get( - r: Request, all_wallets: bool = Query(False), wallet: WalletTypeInfo = Depends(get_key_type), ): @@ -48,17 +43,6 @@ async def api_forms_get( @lnticket_ext.post("/api/v1/forms", status_code=HTTPStatus.CREATED) @lnticket_ext.put("/api/v1/forms/{form_id}") -# @api_check_wallet_key("invoice") -# @api_validate_post_request( -# schema={ -# "wallet": {"type": "string", "empty": False, "required": True}, -# "name": {"type": "string", "empty": False, "required": True}, -# "webhook": {"type": "string", "required": False}, -# "description": {"type": "string", "min": 0, "required": True}, -# "amount": {"type": "integer", "min": 0, "required": True}, -# "flatrate": {"type": "integer", "required": True}, -# } -# ) async def api_form_create( data: CreateFormData, form_id=None, wallet: WalletTypeInfo = Depends(get_key_type) ): @@ -69,13 +53,11 @@ async def api_form_create( raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail=f"Form does not exist." ) - # return {"message": "Form does not exist."}, HTTPStatus.NOT_FOUND if form.wallet != wallet.wallet.id: raise HTTPException( status_code=HTTPStatus.FORBIDDEN, detail=f"Not your form." ) - # return {"message": "Not your form."}, HTTPStatus.FORBIDDEN form = await update_form(form_id, **data.dict()) else: @@ -84,7 +66,6 @@ async def api_form_create( @lnticket_ext.delete("/api/v1/forms/{form_id}") -# @api_check_wallet_key("invoice") async def api_form_delete(form_id, wallet: WalletTypeInfo = Depends(get_key_type)): form = await get_form(form_id) @@ -92,15 +73,12 @@ async def api_form_delete(form_id, wallet: WalletTypeInfo = Depends(get_key_type raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail=f"Form does not exist." ) - # return {"message": "Form does not exist."}, HTTPStatus.NOT_FOUND if form.wallet != wallet.wallet.id: raise HTTPException(status_code=HTTPStatus.FORBIDDEN, detail=f"Not your form.") - # return {"message": "Not your form."}, HTTPStatus.FORBIDDEN await delete_form(form_id) - # return "", HTTPStatus.NO_CONTENT raise HTTPException(status_code=HTTPStatus.NO_CONTENT) @@ -108,7 +86,6 @@ async def api_form_delete(form_id, wallet: WalletTypeInfo = Depends(get_key_type @lnticket_ext.get("/api/v1/tickets") -# @api_check_wallet_key("invoice") async def api_tickets( all_wallets: bool = Query(False), wallet: WalletTypeInfo = Depends(get_key_type) ): @@ -121,22 +98,12 @@ async def api_tickets( @lnticket_ext.post("/api/v1/tickets/{form_id}", status_code=HTTPStatus.CREATED) -# @api_validate_post_request( -# schema={ -# "form": {"type": "string", "empty": False, "required": True}, -# "name": {"type": "string", "empty": False, "required": True}, -# "email": {"type": "string", "empty": True, "required": True}, -# "ltext": {"type": "string", "empty": False, "required": True}, -# "sats": {"type": "integer", "min": 0, "required": True}, -# } -# ) async def api_ticket_make_ticket(data: CreateTicketData, form_id): form = await get_form(form_id) if not form: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail=f"LNTicket does not exist." ) - # return {"message": "LNTicket does not exist."}, HTTPStatus.NOT_FOUND nwords = len(re.split(r"\s+", data.ltext)) @@ -149,7 +116,6 @@ async def api_ticket_make_ticket(data: CreateTicketData, form_id): ) except Exception as e: raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=str(e)) - # return {"message": str(e)}, HTTPStatus.INTERNAL_SERVER_ERROR ticket = await create_ticket( payment_hash=payment_hash, wallet=form.wallet, data=data @@ -159,10 +125,6 @@ async def api_ticket_make_ticket(data: CreateTicketData, form_id): raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="LNTicket could not be fetched." ) - # return ( - # {"message": "LNTicket could not be fetched."}, - # HTTPStatus.NOT_FOUND, - # ) return {"payment_hash": payment_hash, "payment_request": payment_request} @@ -183,7 +145,6 @@ async def api_ticket_send_ticket(payment_hash): @lnticket_ext.delete("/api/v1/tickets/{ticket_id}") -# @api_check_wallet_key("invoice") async def api_ticket_delete(ticket_id, wallet: WalletTypeInfo = Depends(get_key_type)): ticket = await get_ticket(ticket_id) @@ -191,12 +152,9 @@ async def api_ticket_delete(ticket_id, wallet: WalletTypeInfo = Depends(get_key_ raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail=f"LNTicket does not exist." ) - # return {"message": "Paywall does not exist."}, HTTPStatus.NOT_FOUND if ticket.wallet != wallet.wallet.id: raise HTTPException(status_code=HTTPStatus.FORBIDDEN, detail="Not your ticket.") - # return {"message": "Not your ticket."}, HTTPStatus.FORBIDDEN await delete_ticket(ticket_id) raise HTTPException(status_code=HTTPStatus.NO_CONTENT) - # return "" diff --git a/lnbits/extensions/lnurlp/__init__.py b/lnbits/extensions/lnurlp/__init__.py index 41b7a7b6..aa4962f0 100644 --- a/lnbits/extensions/lnurlp/__init__.py +++ b/lnbits/extensions/lnurlp/__init__.py @@ -20,7 +20,6 @@ lnurlp_static_files = [ lnurlp_ext: APIRouter = APIRouter( prefix="/lnurlp", tags=["lnurlp"] - # "lnurlp", __name__, static_folder="static", template_folder="templates" ) @@ -37,8 +36,3 @@ from .views_api import * # noqa def lnurlp_start(): loop = asyncio.get_event_loop() loop.create_task(catch_everything_and_restart(wait_for_paid_invoices)) - - -# from lnbits.tasks import record_async - -# lnurlp_ext.record(record_async(register_listeners)) diff --git a/lnbits/extensions/lnurlp/views_api.py b/lnbits/extensions/lnurlp/views_api.py index d01cf1b1..da75195f 100644 --- a/lnbits/extensions/lnurlp/views_api.py +++ b/lnbits/extensions/lnurlp/views_api.py @@ -110,7 +110,6 @@ async def api_link_create_or_update( link = await update_pay_link(**data.dict(), link_id=link_id) else: link = await create_pay_link(data, wallet_id=wallet.wallet.id) - print("LINK", link) return {**link.dict(), "lnurl": link.lnurl} diff --git a/lnbits/extensions/lnurlpos/__init__.py b/lnbits/extensions/lnurlpos/__init__.py index 4c86c827..a1f60e57 100644 --- a/lnbits/extensions/lnurlpos/__init__.py +++ b/lnbits/extensions/lnurlpos/__init__.py @@ -1,10 +1,7 @@ -import asyncio -from fastapi import APIRouter, FastAPI -from fastapi.staticfiles import StaticFiles -from starlette.routing import Mount +from fastapi import APIRouter + from lnbits.db import Database from lnbits.helpers import template_renderer -from lnbits.tasks import catch_everything_and_restart db = Database("ext_lnurlpos") @@ -15,6 +12,6 @@ def lnurlpos_renderer(): return template_renderer(["lnbits/extensions/lnurlpos/templates"]) -from .views_api import * # noqa -from .views import * # noqa from .lnurl import * # noqa +from .views import * # noqa +from .views_api import * # noqa diff --git a/lnbits/extensions/lnurlpos/crud.py b/lnbits/extensions/lnurlpos/crud.py index a2ca88c5..546392a7 100644 --- a/lnbits/extensions/lnurlpos/crud.py +++ b/lnbits/extensions/lnurlpos/crud.py @@ -1,15 +1,14 @@ -from datetime import datetime from typing import List, Optional, Union + from lnbits.helpers import urlsafe_short_hash -from typing import List, Optional + from . import db -from .models import lnurlposs, lnurlpospayment, createLnurlpos +from .models import createLnurlpos, lnurlpospayment, lnurlposs ###############lnurlposS########################## async def create_lnurlpos(data: createLnurlpos,) -> lnurlposs: - print(data) lnurlpos_id = urlsafe_short_hash() lnurlpos_key = urlsafe_short_hash() await db.execute( diff --git a/lnbits/extensions/lnurlpos/lnurl.py b/lnbits/extensions/lnurlpos/lnurl.py index 17309a27..69164824 100644 --- a/lnbits/extensions/lnurlpos/lnurl.py +++ b/lnbits/extensions/lnurlpos/lnurl.py @@ -1,30 +1,21 @@ -import json import hashlib -import math -from lnurl import ( - LnurlPayResponse, - LnurlPayActionResponse, - LnurlErrorResponse, -) # type: ignore -from lnurl.types import LnurlPayMetadata -from lnbits.core.services import create_invoice -from hashlib import md5 +from http import HTTPStatus + from fastapi import Request from fastapi.param_functions import Query -from . import lnurlpos_ext -from fastapi.templating import Jinja2Templates +from lnurl import LnurlPayActionResponse, LnurlPayResponse # type: ignore from starlette.exceptions import HTTPException -from starlette.responses import HTMLResponse -from http import HTTPStatus -from fastapi.params import Depends -from fastapi.param_functions import Query + +from lnbits.core.services import create_invoice +from lnbits.utils.exchange_rates import fiat_amount_as_satoshis + +from . import lnurlpos_ext from .crud import ( - get_lnurlpos, create_lnurlpospayment, + get_lnurlpos, get_lnurlpospayment, update_lnurlpospayment, ) -from lnbits.utils.exchange_rates import fiat_amount_as_satoshis @lnurlpos_ext.get( @@ -92,9 +83,7 @@ async def lnurl_response( name="lnurlpos.lnurl_callback", ) async def lnurl_callback(request: Request, paymentid: str = Query(None)): - print("lnurlpospayment") lnurlpospayment = await get_lnurlpospayment(paymentid) - print(lnurlpospayment) pos = await get_lnurlpos(lnurlpospayment.posid) if not pos: raise HTTPException( diff --git a/lnbits/extensions/lnurlpos/models.py b/lnbits/extensions/lnurlpos/models.py index fb19f870..4cb9fa8c 100644 --- a/lnbits/extensions/lnurlpos/models.py +++ b/lnbits/extensions/lnurlpos/models.py @@ -1,16 +1,14 @@ import json -from lnurl import Lnurl, LnurlWithdrawResponse, encode as lnurl_encode # type: ignore -from urllib.parse import urlparse, urlunparse, parse_qs, urlencode, ParseResult -from lnurl.types import LnurlPayMetadata # type: ignore -from lnurl.models import LnurlPaySuccessAction, UrlAction # type: ignore from sqlite3 import Row -from typing import NamedTuple, Optional, Dict -import shortuuid # type: ignore -from fastapi.param_functions import Query -from pydantic.main import BaseModel -from pydantic import BaseModel from typing import Optional -from fastapi import FastAPI, Request + +from fastapi import Request +from lnurl import Lnurl +from lnurl import encode as lnurl_encode # type: ignore +from lnurl.models import LnurlPaySuccessAction, UrlAction # type: ignore +from lnurl.types import LnurlPayMetadata # type: ignore +from pydantic import BaseModel +from pydantic.main import BaseModel class createLnurlpos(BaseModel): diff --git a/lnbits/extensions/lnurlpos/views.py b/lnbits/extensions/lnurlpos/views.py index 866ac161..dbe531b2 100644 --- a/lnbits/extensions/lnurlpos/views.py +++ b/lnbits/extensions/lnurlpos/views.py @@ -1,27 +1,19 @@ from http import HTTPStatus -import httpx -from collections import defaultdict -from lnbits.decorators import check_user_exists -from .crud import get_lnurlpos, get_lnurlpospayment -from functools import wraps -from lnbits.core.crud import get_standalone_payment -import hashlib -from lnbits.core.services import check_invoice_status -from lnbits.core.crud import update_payment_status -from lnbits.core.views.api import api_payment -from fastapi import FastAPI, Request +from fastapi import Request +from fastapi.param_functions import Query +from fastapi.params import Depends from fastapi.templating import Jinja2Templates from starlette.exceptions import HTTPException from starlette.responses import HTMLResponse -from fastapi.params import Depends -from fastapi.param_functions import Query -import random -from datetime import datetime -from http import HTTPStatus +from lnbits.core.crud import update_payment_status +from lnbits.core.models import User +from lnbits.core.views.api import api_payment +from lnbits.decorators import check_user_exists + from . import lnurlpos_ext, lnurlpos_renderer -from lnbits.core.models import User, Payment +from .crud import get_lnurlpos, get_lnurlpospayment templates = Jinja2Templates(directory="templates") diff --git a/lnbits/extensions/lnurlpos/views_api.py b/lnbits/extensions/lnurlpos/views_api.py index f2adcf7b..c4306052 100644 --- a/lnbits/extensions/lnurlpos/views_api.py +++ b/lnbits/extensions/lnurlpos/views_api.py @@ -32,14 +32,12 @@ async def api_list_currencies_available(): @lnurlpos_ext.post("/api/v1/lnurlpos") @lnurlpos_ext.put("/api/v1/lnurlpos/{lnurlpos_id}") async def api_lnurlpos_create_or_update( - request: Request, data: createLnurlpos, wallet: WalletTypeInfo = Depends(require_admin_key), lnurlpos_id: str = Query(None), ): if not lnurlpos_id: lnurlpos = await create_lnurlpos(data) - print(lnurlpos.dict()) return lnurlpos.dict() else: lnurlpos = await update_lnurlpos(data, lnurlpos_id=lnurlpos_id) @@ -48,7 +46,7 @@ async def api_lnurlpos_create_or_update( @lnurlpos_ext.get("/api/v1/lnurlpos") async def api_lnurlposs_retrieve( - request: Request, wallet: WalletTypeInfo = Depends(get_key_type) + wallet: WalletTypeInfo = Depends(get_key_type) ): wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids try: @@ -75,7 +73,6 @@ async def api_lnurlpos_retrieve( @lnurlpos_ext.delete("/api/v1/lnurlpos/{lnurlpos_id}") async def api_lnurlpos_delete( - request: Request, wallet: WalletTypeInfo = Depends(require_admin_key), lnurlpos_id: str = Query(None), ): diff --git a/lnbits/extensions/ngrok/__init__.py b/lnbits/extensions/ngrok/__init__.py index a60414a3..0ef256d1 100644 --- a/lnbits/extensions/ngrok/__init__.py +++ b/lnbits/extensions/ngrok/__init__.py @@ -1,10 +1,7 @@ -import asyncio -from fastapi import APIRouter, FastAPI -from fastapi.staticfiles import StaticFiles -from starlette.routing import Mount +from fastapi import APIRouter + from lnbits.db import Database from lnbits.helpers import template_renderer -from lnbits.tasks import catch_everything_and_restart db = Database("ext_ngrok") diff --git a/lnbits/extensions/ngrok/views.py b/lnbits/extensions/ngrok/views.py index 8b3fe0dd..649494fd 100644 --- a/lnbits/extensions/ngrok/views.py +++ b/lnbits/extensions/ngrok/views.py @@ -1,24 +1,21 @@ -from http import HTTPStatus +from os import getenv + +from fastapi import Request +from fastapi.params import Depends +from fastapi.templating import Jinja2Templates +from pyngrok import conf, ngrok + +from lnbits.core.models import User from lnbits.decorators import check_user_exists from . import ngrok_ext, ngrok_renderer -from fastapi import FastAPI, Request -from fastapi.params import Depends -from fastapi.templating import Jinja2Templates - -from starlette.exceptions import HTTPException -from starlette.responses import HTMLResponse -from lnbits.core.models import User -from os import getenv -from pyngrok import conf, ngrok templates = Jinja2Templates(directory="templates") def log_event_callback(log): string = str(log) - print(string) string2 = string[string.find('url="https') : string.find('url="https') + 80] if string2: string3 = string2 diff --git a/lnbits/extensions/offlineshop/__init__.py b/lnbits/extensions/offlineshop/__init__.py index 0cc3201d..471c1e35 100644 --- a/lnbits/extensions/offlineshop/__init__.py +++ b/lnbits/extensions/offlineshop/__init__.py @@ -1,6 +1,5 @@ -from fastapi import APIRouter, FastAPI +from fastapi import APIRouter from fastapi.staticfiles import StaticFiles -from starlette.routing import Mount from lnbits.db import Database from lnbits.helpers import template_renderer @@ -18,13 +17,6 @@ offlineshop_static_files = [ offlineshop_ext: APIRouter = APIRouter( prefix="/offlineshop", tags=["Offlineshop"], - # routes=[ - # Mount( - # "/static", - # app=StaticFiles(directory="lnbits/extensions/offlineshop/static"), - # name="offlineshop_static", - # ) - # ], ) diff --git a/lnbits/extensions/offlineshop/lnurl.py b/lnbits/extensions/offlineshop/lnurl.py index ea576f1d..0bf779e4 100644 --- a/lnbits/extensions/offlineshop/lnurl.py +++ b/lnbits/extensions/offlineshop/lnurl.py @@ -1,20 +1,19 @@ import hashlib -from lnbits.extensions.offlineshop.models import Item -from fastapi.params import Query -from starlette.requests import Request -from lnbits.helpers import url_for -from lnurl import ( - LnurlPayResponse, - LnurlPayActionResponse, +from fastapi.params import Query +from lnurl import ( # type: ignore LnurlErrorResponse, -) # type: ignore + LnurlPayActionResponse, + LnurlPayResponse, +) +from starlette.requests import Request from lnbits.core.services import create_invoice +from lnbits.extensions.offlineshop.models import Item from lnbits.utils.exchange_rates import fiat_amount_as_satoshis from . import offlineshop_ext -from .crud import get_shop, get_item +from .crud import get_item, get_shop @offlineshop_ext.get("/lnurl/{item_id}", name="offlineshop.lnurl_response") diff --git a/lnbits/extensions/paywall/migrations.py b/lnbits/extensions/paywall/migrations.py index 8afe58b1..fa91e409 100644 --- a/lnbits/extensions/paywall/migrations.py +++ b/lnbits/extensions/paywall/migrations.py @@ -1,6 +1,3 @@ -from sqlalchemy.exc import OperationalError # type: ignore - - async def m001_initial(db): """ Initial paywalls table. diff --git a/lnbits/extensions/paywall/views_api.py b/lnbits/extensions/paywall/views_api.py index d0ab8121..148a0d00 100644 --- a/lnbits/extensions/paywall/views_api.py +++ b/lnbits/extensions/paywall/views_api.py @@ -59,8 +59,6 @@ async def api_paywall_create_invoice( wallet: WalletTypeInfo = Depends(get_key_type), ): paywall = await get_paywall(paywall_id) - print("PAYW", paywall) - print("DATA", data) if data.amount < paywall.amount: raise HTTPException( diff --git a/lnbits/extensions/satsdice/__init__.py b/lnbits/extensions/satsdice/__init__.py index 5a645618..c20b032e 100644 --- a/lnbits/extensions/satsdice/__init__.py +++ b/lnbits/extensions/satsdice/__init__.py @@ -1,10 +1,7 @@ -import asyncio -from fastapi import APIRouter, FastAPI -from fastapi.staticfiles import StaticFiles -from starlette.routing import Mount +from fastapi import APIRouter + from lnbits.db import Database from lnbits.helpers import template_renderer -from lnbits.tasks import catch_everything_and_restart db = Database("ext_satsdice") @@ -15,11 +12,6 @@ def satsdice_renderer(): return template_renderer(["lnbits/extensions/satsdice/templates"]) -from .views_api import * # noqa -from .views import * # noqa from .lnurl import * # noqa - - -# def satsdice_start(): -# loop = asyncio.get_event_loop() -# loop.create_task(catch_everything_and_restart(wait_for_paid_invoices)) +from .views import * # noqa +from .views_api import * # noqa diff --git a/lnbits/extensions/satsdice/lnurl.py b/lnbits/extensions/satsdice/lnurl.py index ec37854e..66831ac3 100644 --- a/lnbits/extensions/satsdice/lnurl.py +++ b/lnbits/extensions/satsdice/lnurl.py @@ -52,7 +52,6 @@ async def api_lnurlp_callback( req: Request, link_id: str = Query(None), amount: str = Query(None) ): link = await get_satsdice_pay(link_id) - print(link) if not link: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="LNURL-pay not found." @@ -94,7 +93,6 @@ async def api_lnurlp_callback( await create_satsdice_payment(data) payResponse = {"pr": payment_request, "successAction": success_action, "routes": []} - print(json.dumps(payResponse)) return json.dumps(payResponse) @@ -130,7 +128,6 @@ async def api_lnurlw_response(req: Request, unique_hash: str = Query(None)): # CALLBACK - @satsdice_ext.get( "/api/v1/lnurlw/cb/{unique_hash}", status_code=HTTPStatus.OK, @@ -148,7 +145,6 @@ async def api_lnurlw_callback( return {"status": "ERROR", "reason": "no withdraw"} if link.used: return {"status": "ERROR", "reason": "spent"} - print("winner") paylink = await get_satsdice_pay(link.satsdice_pay) await update_satsdice_withdraw(link.id, used=1) diff --git a/lnbits/extensions/satsdice/models.py b/lnbits/extensions/satsdice/models.py index f27f66aa..fd9af74f 100644 --- a/lnbits/extensions/satsdice/models.py +++ b/lnbits/extensions/satsdice/models.py @@ -1,10 +1,8 @@ import json from sqlite3 import Row -from typing import Dict, NamedTuple, Optional -from urllib.parse import ParseResult, parse_qs, urlencode, urlparse, urlunparse +from typing import Dict, Optional -import shortuuid # type: ignore -from fastapi import FastAPI, Request +from fastapi import Request from fastapi.param_functions import Query from lnurl import Lnurl, LnurlWithdrawResponse from lnurl import encode as lnurl_encode # type: ignore diff --git a/lnbits/extensions/satsdice/views.py b/lnbits/extensions/satsdice/views.py index 96d5af46..a9cbcaf7 100644 --- a/lnbits/extensions/satsdice/views.py +++ b/lnbits/extensions/satsdice/views.py @@ -1,24 +1,16 @@ import random -from datetime import datetime from http import HTTPStatus -from fastapi import FastAPI, Request +from fastapi import Request from fastapi.param_functions import Query from fastapi.params import Depends from fastapi.templating import Jinja2Templates from starlette.exceptions import HTTPException from starlette.responses import HTMLResponse -from lnbits.core.crud import ( - delete_expired_invoices, - get_balance_checks, - get_payments, - get_standalone_payment, -) -from lnbits.core.models import Payment, User -from lnbits.core.services import check_invoice_status +from lnbits.core.models import User from lnbits.core.views.api import api_payment -from lnbits.decorators import WalletTypeInfo, check_user_exists, get_key_type +from lnbits.decorators import check_user_exists from . import satsdice_ext, satsdice_renderer from .crud import ( diff --git a/lnbits/extensions/satsdice/views_api.py b/lnbits/extensions/satsdice/views_api.py index 43633916..044a88ec 100644 --- a/lnbits/extensions/satsdice/views_api.py +++ b/lnbits/extensions/satsdice/views_api.py @@ -7,20 +7,15 @@ from lnurl.exceptions import InvalidUrl as LnurlInvalidUrl # type: ignore from starlette.exceptions import HTTPException from lnbits.core.crud import get_user -from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key +from lnbits.decorators import WalletTypeInfo, get_key_type from . import satsdice_ext from .crud import ( create_satsdice_pay, - create_satsdice_withdraw, delete_satsdice_pay, - delete_satsdice_withdraw, get_satsdice_pay, get_satsdice_pays, - get_satsdice_withdraw, - get_satsdice_withdraws, update_satsdice_pay, - update_satsdice_withdraw, ) from .models import CreateSatsDiceLink, CreateSatsDiceWithdraws, satsdiceLink @@ -51,7 +46,6 @@ async def api_links( @satsdice_ext.get("/api/v1/links/{link_id}") async def api_link_retrieve( - data: CreateSatsDiceLink, link_id: str = Query(None), wallet: WalletTypeInfo = Depends(get_key_type), ): diff --git a/lnbits/extensions/satspay/__init__.py b/lnbits/extensions/satspay/__init__.py index b9c67e40..7cc5f64c 100644 --- a/lnbits/extensions/satspay/__init__.py +++ b/lnbits/extensions/satspay/__init__.py @@ -1,5 +1,3 @@ -import asyncio - from fastapi import APIRouter from lnbits.db import Database @@ -15,5 +13,5 @@ def satspay_renderer(): return template_renderer(["lnbits/extensions/satspay/templates"]) -from .views_api import * # noqa from .views import * # noqa +from .views_api import * # noqa diff --git a/lnbits/extensions/satspay/crud.py b/lnbits/extensions/satspay/crud.py index 8efa7027..edbd39e7 100644 --- a/lnbits/extensions/satspay/crud.py +++ b/lnbits/extensions/satspay/crud.py @@ -1,16 +1,17 @@ -from typing import List, Optional, Union +from typing import List, Optional + +import httpx + +from lnbits.core.services import create_invoice +from lnbits.core.views.api import api_payment +from lnbits.helpers import urlsafe_short_hash + +from ..watchonly.crud import get_fresh_address, get_mempool, get_watch_wallet # from lnbits.db import open_ext_db from . import db from .models import Charges, CreateCharge -from lnbits.helpers import urlsafe_short_hash - -import httpx -from lnbits.core.services import create_invoice, check_invoice_status -from ..watchonly.crud import get_watch_wallet, get_fresh_address, get_mempool -from lnbits.core.views.api import api_payment - ###############CHARGES########################## diff --git a/lnbits/extensions/satspay/views.py b/lnbits/extensions/satspay/views.py index f6694034..500f0212 100644 --- a/lnbits/extensions/satspay/views.py +++ b/lnbits/extensions/satspay/views.py @@ -1,13 +1,13 @@ -from fastapi.param_functions import Depends -from starlette.exceptions import HTTPException -from starlette.responses import HTMLResponse -from starlette.requests import Request -from lnbits.core.models import User -from lnbits.core.crud import get_wallet -from lnbits.decorators import check_user_exists from http import HTTPStatus +from fastapi.param_functions import Depends from fastapi.templating import Jinja2Templates +from starlette.exceptions import HTTPException +from starlette.requests import Request +from starlette.responses import HTMLResponse + +from lnbits.core.models import User +from lnbits.decorators import check_user_exists from . import satspay_ext, satspay_renderer from .crud import get_charge diff --git a/lnbits/extensions/satspay/views_api.py b/lnbits/extensions/satspay/views_api.py index 695673e7..a207113b 100644 --- a/lnbits/extensions/satspay/views_api.py +++ b/lnbits/extensions/satspay/views_api.py @@ -7,7 +7,7 @@ from starlette.exceptions import HTTPException from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key from lnbits.extensions.satspay import satspay_ext -from lnbits.core.views.api import api_payment + from .crud import ( check_address_balance, create_charge, diff --git a/lnbits/extensions/splitpayments/__init__.py b/lnbits/extensions/splitpayments/__init__.py index b1e0fbdf..9292d4bd 100644 --- a/lnbits/extensions/splitpayments/__init__.py +++ b/lnbits/extensions/splitpayments/__init__.py @@ -1,7 +1,8 @@ import asyncio -from fastapi import APIRouter, FastAPI + +from fastapi import APIRouter from fastapi.staticfiles import StaticFiles -from starlette.routing import Mount + from lnbits.db import Database from lnbits.helpers import template_renderer from lnbits.tasks import catch_everything_and_restart @@ -23,14 +24,9 @@ splitpayments_ext: APIRouter = APIRouter( def splitpayments_renderer(): return template_renderer(["lnbits/extensions/splitpayments/templates"]) - -# from lnbits.tasks import record_async -# splitpayments_ext.record(record_async(register_listeners)) - - -from .views_api import * # noqa -from .views import * # noqa from .tasks import wait_for_paid_invoices +from .views import * # noqa +from .views_api import * # noqa def splitpayments_start(): diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index 12612782..c54c067f 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -1,21 +1,15 @@ +import asyncio import json -from lnbits.core.models import Payment -from lnbits.core.crud import create_payment from lnbits.core import db as core_db -from lnbits.tasks import register_invoice_listener, internal_invoice_queue +from lnbits.core.crud import create_payment +from lnbits.core.models import Payment from lnbits.helpers import urlsafe_short_hash +from lnbits.tasks import internal_invoice_queue, register_invoice_listener from .crud import get_targets -import asyncio -import httpx - -from lnbits.core import db as core_db -from lnbits.core.models import Payment - - async def wait_for_paid_invoices(): invoice_queue = asyncio.Queue() register_invoice_listener(invoice_queue) diff --git a/lnbits/extensions/splitpayments/views_api.py b/lnbits/extensions/splitpayments/views_api.py index 3f354c24..8b5a282a 100644 --- a/lnbits/extensions/splitpayments/views_api.py +++ b/lnbits/extensions/splitpayments/views_api.py @@ -26,7 +26,6 @@ async def api_targets_set( targets = [] data = TargetPut.parse_obj(body["targets"]) for entry in data.__root__: - print("ENTRY", entry) wallet = await get_wallet(entry.wallet) if not wallet: wallet = await get_wallet_for_key(entry.wallet, "invoice") diff --git a/lnbits/extensions/streamalerts/crud.py b/lnbits/extensions/streamalerts/crud.py index 9a9c65df..1e7239a9 100644 --- a/lnbits/extensions/streamalerts/crud.py +++ b/lnbits/extensions/streamalerts/crud.py @@ -97,7 +97,6 @@ async def post_donation(donation_id: str) -> tuple: } async with httpx.AsyncClient() as client: response = await client.post(url, data=data) - print(response.json()) status = [s for s in list(HTTPStatus) if s == response.status_code][0] elif service.servicename == "StreamElements": return {"message": "StreamElements not yet supported!"} @@ -191,10 +190,8 @@ async def authenticate_service(service_id, code, redirect_uri): "client_secret": service.client_secret, "redirect_uri": redirect_uri, } - print(data) async with httpx.AsyncClient() as client: response = (await client.post(url, data=data)).json() - print(response) token = response["access_token"] success = await service_add_token(service_id, token) return f"/streamalerts/?usr={user}", success diff --git a/lnbits/extensions/subdomains/crud.py b/lnbits/extensions/subdomains/crud.py index 5a4654da..a84c030b 100644 --- a/lnbits/extensions/subdomains/crud.py +++ b/lnbits/extensions/subdomains/crud.py @@ -77,7 +77,6 @@ async def get_subdomainBySubdomain(subdomain: str) -> Optional[Subdomains]: "SELECT s.*, d.domain as domain_name FROM subdomains.subdomain s INNER JOIN domain d ON (s.domain = d.id) WHERE s.subdomain = ?", (subdomain,), ) - print(row) return Subdomains(**row) if row else None diff --git a/lnbits/extensions/subdomains/tasks.py b/lnbits/extensions/subdomains/tasks.py index 37f2b711..75223e82 100644 --- a/lnbits/extensions/subdomains/tasks.py +++ b/lnbits/extensions/subdomains/tasks.py @@ -18,17 +18,6 @@ async def wait_for_paid_invoices(): await on_invoice_paid(payment) -# async def register_listeners(): -# invoice_paid_chan_send, invoice_paid_chan_recv = trio.open_memory_channel(2) -# register_invoice_listener(invoice_paid_chan_send) -# await wait_for_paid_invoices(invoice_paid_chan_recv) - - -# async def wait_for_paid_invoices(invoice_paid_chan: trio.MemoryReceiveChannel): -# async for payment in invoice_paid_chan: -# await on_invoice_paid(payment) - - async def on_invoice_paid(payment: Payment) -> None: if "lnsubdomain" != payment.extra.get("tag"): # not an lnurlp invoice diff --git a/lnbits/extensions/subdomains/util.py b/lnbits/extensions/subdomains/util.py index c7d66307..88f6e134 100644 --- a/lnbits/extensions/subdomains/util.py +++ b/lnbits/extensions/subdomains/util.py @@ -1,11 +1,7 @@ -from lnbits.extensions.subdomains.models import Subdomains - -# Python3 program to validate -# domain name -# using regular expression import re import socket + # Function to validate domain name. def isValidDomain(str): # Regex to check valid diff --git a/lnbits/extensions/tipjar/crud.py b/lnbits/extensions/tipjar/crud.py index 14182e4e..29e1a469 100644 --- a/lnbits/extensions/tipjar/crud.py +++ b/lnbits/extensions/tipjar/crud.py @@ -1,12 +1,11 @@ -from . import db -from .models import Tip, TipJar, createTip, createTipJar - -from ..satspay.crud import delete_charge # type: ignore - from typing import Optional from lnbits.db import SQLITE +from ..satspay.crud import delete_charge # type: ignore +from . import db +from .models import Tip, TipJar, createTipJar + async def create_tip( id: int, wallet: str, message: str, name: str, sats: int, tipjar: str diff --git a/lnbits/extensions/tipjar/helpers.py b/lnbits/extensions/tipjar/helpers.py index 54061405..7214e19c 100644 --- a/lnbits/extensions/tipjar/helpers.py +++ b/lnbits/extensions/tipjar/helpers.py @@ -1,6 +1,6 @@ from lnbits.core.crud import get_wallet + from .crud import get_tipjar -import json async def get_charge_details(tipjar_id): diff --git a/lnbits/extensions/tipjar/models.py b/lnbits/extensions/tipjar/models.py index dd499464..0bfea50c 100644 --- a/lnbits/extensions/tipjar/models.py +++ b/lnbits/extensions/tipjar/models.py @@ -1,15 +1,9 @@ -import json -from lnurl import Lnurl, LnurlWithdrawResponse, encode as lnurl_encode # type: ignore -from urllib.parse import urlparse, urlunparse, parse_qs, urlencode, ParseResult -from lnurl.types import LnurlPayMetadata # type: ignore from sqlite3 import Row -from typing import NamedTuple, Optional, Dict -import shortuuid # type: ignore +from typing import NamedTuple, Optional + from fastapi.param_functions import Query -from pydantic.main import BaseModel from pydantic import BaseModel -from typing import Optional, NamedTuple -from fastapi import FastAPI, Request +from pydantic.main import BaseModel class CreateCharge(BaseModel): diff --git a/lnbits/extensions/tipjar/views.py b/lnbits/extensions/tipjar/views.py index 7038862d..21a87246 100644 --- a/lnbits/extensions/tipjar/views.py +++ b/lnbits/extensions/tipjar/views.py @@ -1,26 +1,16 @@ -from .crud import get_tipjar - from http import HTTPStatus -import httpx -from collections import defaultdict -from lnbits.decorators import check_user_exists -from functools import wraps -import hashlib -from lnbits.core.services import check_invoice_status -from lnbits.core.crud import update_payment_status, get_standalone_payment -from fastapi import FastAPI, Request +from fastapi import Request +from fastapi.param_functions import Query +from fastapi.params import Depends from fastapi.templating import Jinja2Templates from starlette.exceptions import HTTPException -from starlette.responses import HTMLResponse -from fastapi.params import Depends -from fastapi.param_functions import Query -import random -from datetime import datetime -from http import HTTPStatus +from lnbits.core.models import User +from lnbits.decorators import check_user_exists + from . import tipjar_ext, tipjar_renderer -from lnbits.core.models import User, Payment +from .crud import get_tipjar templates = Jinja2Templates(directory="templates") @@ -36,7 +26,6 @@ async def index(request: Request, user: User = Depends(check_user_exists)): async def tip(request: Request, tipjar_id: int = Query(None)): """Return the donation form for the Tipjar corresponding to id""" tipjar = await get_tipjar(tipjar_id) - print(tipjar_id) if not tipjar: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="TipJar does not exist." diff --git a/lnbits/extensions/tipjar/views_api.py b/lnbits/extensions/tipjar/views_api.py index c25e08ea..55c2d83f 100644 --- a/lnbits/extensions/tipjar/views_api.py +++ b/lnbits/extensions/tipjar/views_api.py @@ -1,30 +1,28 @@ from http import HTTPStatus -import json -from fastapi import Request + from fastapi.param_functions import Query from fastapi.params import Depends -from lnurl.exceptions import InvalidUrl as LnurlInvalidUrl # type: ignore from starlette.exceptions import HTTPException -from lnbits.decorators import WalletTypeInfo, get_key_type from lnbits.core.crud import get_user +from lnbits.decorators import WalletTypeInfo, get_key_type +from ..satspay.crud import create_charge from . import tipjar_ext -from .helpers import get_charge_details from .crud import ( - create_tipjar, - get_tipjar, create_tip, - get_tipjars, + create_tipjar, + delete_tip, + delete_tipjar, get_tip, + get_tipjar, + get_tipjars, get_tips, update_tip, update_tipjar, - delete_tip, - delete_tipjar, ) -from ..satspay.crud import create_charge -from .models import createTipJar, createTips, createTip, CreateCharge +from .helpers import get_charge_details +from .models import CreateCharge, createTipJar, createTips @tipjar_ext.post("/api/v1/tipjars") @@ -54,7 +52,6 @@ async def api_create_tip(data: createTips): webhook = tipjar.webhook charge_details = await get_charge_details(tipjar.id) - print(charge_details["time"]) name = data.name # Ensure that description string can be split reliably name = name.replace('"', "''") diff --git a/lnbits/extensions/tpos/views.py b/lnbits/extensions/tpos/views.py index bf16ecd3..2d78ecce 100644 --- a/lnbits/extensions/tpos/views.py +++ b/lnbits/extensions/tpos/views.py @@ -29,7 +29,6 @@ async def tpos(request: Request, tpos_id): raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="TPoS does not exist." ) - print(request.base_url) return tpos_renderer().TemplateResponse( "tpos/tpos.html", {"request": request, "tpos": tpos} diff --git a/lnbits/extensions/tpos/views_api.py b/lnbits/extensions/tpos/views_api.py index 54f6698b..ae457b61 100644 --- a/lnbits/extensions/tpos/views_api.py +++ b/lnbits/extensions/tpos/views_api.py @@ -4,11 +4,11 @@ from fastapi import Query from fastapi.params import Depends from starlette.exceptions import HTTPException -from lnbits.core.crud import get_user, get_wallet -from lnbits.core.services import check_invoice_status, create_invoice -from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key +from lnbits.core.crud import get_user +from lnbits.core.services import create_invoice from lnbits.core.views.api import api_payment -from lnbits.core.models import Wallet +from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key + from . import tpos_ext from .crud import create_tpos, delete_tpos, get_tpos, get_tposs from .models import CreateTposData @@ -43,15 +43,12 @@ async def api_tpos_delete( raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="TPoS does not exist." ) - # return {"message": "TPoS does not exist."}, HTTPStatus.NOT_FOUND if tpos.wallet != wallet.wallet.id: raise HTTPException(status_code=HTTPStatus.FORBIDDEN, detail="Not your TPoS.") - # return {"message": "Not your TPoS."}, HTTPStatus.FORBIDDEN await delete_tpos(tpos_id) raise HTTPException(status_code=HTTPStatus.NO_CONTENT) - # return "", HTTPStatus.NO_CONTENT @tpos_ext.post("/api/v1/tposs/{tpos_id}/invoices", status_code=HTTPStatus.CREATED) @@ -62,7 +59,6 @@ async def api_tpos_create_invoice(amount: int = Query(..., ge=1), tpos_id: str = raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="TPoS does not exist." ) - # return {"message": "TPoS does not exist."}, HTTPStatus.NOT_FOUND try: payment_hash, payment_request = await create_invoice( @@ -73,7 +69,6 @@ async def api_tpos_create_invoice(amount: int = Query(..., ge=1), tpos_id: str = ) except Exception as e: raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=str(e)) - # return {"message": str(e)}, HTTPStatus.INTERNAL_SERVER_ERROR return {"payment_hash": payment_hash, "payment_request": payment_request} diff --git a/lnbits/extensions/usermanager/crud.py b/lnbits/extensions/usermanager/crud.py index 1ce66d4f..f3b96185 100644 --- a/lnbits/extensions/usermanager/crud.py +++ b/lnbits/extensions/usermanager/crud.py @@ -14,7 +14,6 @@ from .models import CreateUserData, Users, Wallets ### Users - async def create_usermanager_user(data: CreateUserData) -> Users: account = await create_account() user = await get_user(account.id) diff --git a/lnbits/extensions/usermanager/views_api.py b/lnbits/extensions/usermanager/views_api.py index 26b9874b..67408709 100644 --- a/lnbits/extensions/usermanager/views_api.py +++ b/lnbits/extensions/usermanager/views_api.py @@ -25,7 +25,6 @@ from .models import CreateUserData, CreateUserWallet ### Users - @usermanager_ext.get("/api/v1/users", status_code=HTTPStatus.OK) async def api_usermanager_users(wallet: WalletTypeInfo = Depends(get_key_type)): user_id = wallet.wallet.user @@ -39,15 +38,6 @@ async def api_usermanager_user(user_id, wallet: WalletTypeInfo = Depends(get_key @usermanager_ext.post("/api/v1/users", status_code=HTTPStatus.CREATED) -# @api_validate_post_request( -# schema={ -# "user_name": {"type": "string", "empty": False, "required": True}, -# "wallet_name": {"type": "string", "empty": False, "required": True}, -# "admin_id": {"type": "string", "empty": False, "required": True}, -# "email": {"type": "string", "required": False}, -# "password": {"type": "string", "required": False}, -# } -# ) async def api_usermanager_users_create( data: CreateUserData, wallet: WalletTypeInfo = Depends(get_key_type) ): @@ -118,7 +108,6 @@ async def api_usermanager_wallet_transactions( async def api_usermanager_users_wallets( user_id, wallet: WalletTypeInfo = Depends(get_key_type) ): - # wallet = await get_usermanager_users_wallets(user_id) return [ s_wallet.dict() for s_wallet in await get_usermanager_users_wallets(user_id) ] diff --git a/lnbits/extensions/watchonly/crud.py b/lnbits/extensions/watchonly/crud.py index 68b59da6..0ce3ead9 100644 --- a/lnbits/extensions/watchonly/crud.py +++ b/lnbits/extensions/watchonly/crud.py @@ -75,7 +75,6 @@ def parse_key(masterpub: str): async def create_watch_wallet(user: str, masterpub: str, title: str) -> Wallets: # check the masterpub is fine, it will raise an exception if not - print("PARSE", parse_key(masterpub)) parse_key(masterpub) wallet_id = urlsafe_short_hash() await db.execute( diff --git a/lnbits/extensions/watchonly/views.py b/lnbits/extensions/watchonly/views.py index e0646651..819d1248 100644 --- a/lnbits/extensions/watchonly/views.py +++ b/lnbits/extensions/watchonly/views.py @@ -8,9 +8,6 @@ from lnbits.decorators import check_user_exists from . import watchonly_ext, watchonly_renderer -# from .crud import get_payment - - templates = Jinja2Templates(directory="templates") @@ -19,15 +16,3 @@ async def index(request: Request, user: User = Depends(check_user_exists)): return watchonly_renderer().TemplateResponse( "watchonly/index.html", {"request": request, "user": user.dict()} ) - - -# @watchonly_ext.get("/{charge_id}", response_class=HTMLResponse) -# async def display(request: Request, charge_id): -# link = get_payment(charge_id) -# if not link: -# raise HTTPException( -# status_code=HTTPStatus.NOT_FOUND, -# detail="Charge link does not exist." -# ) -# -# return watchonly_renderer().TemplateResponse("watchonly/display.html", {"request": request,"link": link.dict()}) diff --git a/lnbits/extensions/withdraw/__init__.py b/lnbits/extensions/withdraw/__init__.py index b756aeea..0bb8ed83 100644 --- a/lnbits/extensions/withdraw/__init__.py +++ b/lnbits/extensions/withdraw/__init__.py @@ -18,7 +18,6 @@ withdraw_static_files = [ withdraw_ext: APIRouter = APIRouter( prefix="/withdraw", tags=["withdraw"], - # "withdraw", __name__, static_folder="static", template_folder="templates" ) @@ -29,7 +28,3 @@ def withdraw_renderer(): from .lnurl import * # noqa from .views import * # noqa from .views_api import * # noqa - -# @withdraw_ext.on_event("startup") -# def _do_it(): -# register_listeners() diff --git a/lnbits/extensions/withdraw/lnurl.py b/lnbits/extensions/withdraw/lnurl.py index df500dc1..884964cd 100644 --- a/lnbits/extensions/withdraw/lnurl.py +++ b/lnbits/extensions/withdraw/lnurl.py @@ -22,20 +22,16 @@ from .crud import get_withdraw_link_by_hash, update_withdraw_link name="withdraw.api_lnurl_response", ) async def api_lnurl_response(request: Request, unique_hash): - print("NOT UNIQUE") link = await get_withdraw_link_by_hash(unique_hash) if not link: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Withdraw link does not exist." ) - # return ({"status": "ERROR", "reason": "LNURL-withdraw not found."}, - # HTTPStatus.OK, - # ) + if link.is_spent: raise HTTPException( - # WHAT STATUS_CODE TO USE?? detail="Withdraw is spent." ) url = request.url_for("withdraw.api_lnurl_callback", unique_hash=link.unique_hash) @@ -52,9 +48,6 @@ async def api_lnurl_response(request: Request, unique_hash): # CALLBACK -#https://5650-2001-8a0-fa12-2900-4c13-748a-fbb9-a47f.ngrok.io/withdraw/api/v1/lnurl/cb/eJHybS8hqcBWajZM63H3FP?k1=MUaYBGrUPuAs8SLpfizmCk&pr=lnbc100n1pse2tsypp5ju0yn3w9j0n8rr3squg0knddawu2ude2cgrm6zje5f34e9jzpmlsdq8w3jhxaqxqyjw5qcqpjsp5tyhu78pamqg5zfy96kup329zt40ramc8gs2ev6jxgp66zca2348qrzjqwac3nxyg3f5mfa4ke9577c4u8kvkx8pqtdsusqdfww0aymk823x6znwa5qqzyqqqyqqqqlgqqqqppgq9q9qy9qsq66zp6pctnlmk59xwtqjga5lvqrkyccmafmn43enhhc6ugew80sanxymepshpv44m9yyhfgh8r2upvxhgk00d36rpqzfy3fxemeu4jhqp96l8hx - - @withdraw_ext.get( "/api/v1/lnurl/cb/{unique_hash}", name="withdraw.api_lnurl_callback", @@ -126,7 +119,6 @@ async def api_lnurl_callback( name="withdraw.api_lnurl_multi_response", ) async def api_lnurl_multi_response(request: Request, unique_hash, id_unique_hash): - print("UNIQUE") link = await get_withdraw_link_by_hash(unique_hash) if not link: diff --git a/lnbits/extensions/withdraw/views.py b/lnbits/extensions/withdraw/views.py index 56082d85..d9425a03 100644 --- a/lnbits/extensions/withdraw/views.py +++ b/lnbits/extensions/withdraw/views.py @@ -18,8 +18,6 @@ templates = Jinja2Templates(directory="templates") @withdraw_ext.get("/", response_class=HTMLResponse) -# @validate_uuids(["usr"], required=True) -# @check_user_exists() async def index(request: Request, user: User = Depends(check_user_exists)): return withdraw_renderer().TemplateResponse( "withdraw/index.html", {"request": request, "user": user.dict()} @@ -34,9 +32,6 @@ async def display(request: Request, link_id): raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Withdraw link does not exist." ) - # response.status_code = HTTPStatus.NOT_FOUND - # return "Withdraw link does not exist." #probably here is where we should return the 404?? - print("LINK", link) return withdraw_renderer().TemplateResponse( "withdraw/display.html", { @@ -55,10 +50,7 @@ async def img(request: Request, link_id): raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Withdraw link does not exist." ) - # response.status_code = HTTPStatus.NOT_FOUND - # return "Withdraw link does not exist." qr = pyqrcode.create(link.lnurl(request)) - print(qr) stream = BytesIO() qr.svg(stream, scale=3) stream.seek(0) @@ -102,13 +94,11 @@ async def print_qr(request: Request, link_id): raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Withdraw link does not exist." ) - # response.status_code = HTTPStatus.NOT_FOUND - # return "Withdraw link does not exist." links.append(str(linkk.lnurl(request))) count = count + 1 page_link = list(chunks(links, 2)) linked = list(chunks(page_link, 5)) - print("LINKED", linked) + return withdraw_renderer().TemplateResponse( "withdraw/print_qr.html", {"request": request, "link": linked, "unique": True} )