From 33cfbe87bb1b0cd4bf3e86c8fae09797e6199bd8 Mon Sep 17 00:00:00 2001 From: benarc Date: Wed, 13 Oct 2021 21:51:21 +0100 Subject: [PATCH] views converted --- lnbits/extensions/jukebox/views_api.py | 1 + lnbits/extensions/satsdice/__init__.py | 26 +- lnbits/extensions/satsdice/crud.py | 61 ++-- lnbits/extensions/satsdice/lnurl.py | 1 - lnbits/extensions/satsdice/models.py | 38 ++- .../satsdice/templates/satsdice/index.html | 3 +- lnbits/extensions/satsdice/views.py | 71 ++--- lnbits/extensions/satsdice/views_api.py | 260 +++++++++--------- 8 files changed, 252 insertions(+), 209 deletions(-) diff --git a/lnbits/extensions/jukebox/views_api.py b/lnbits/extensions/jukebox/views_api.py index 233873ef..ee2820db 100644 --- a/lnbits/extensions/jukebox/views_api.py +++ b/lnbits/extensions/jukebox/views_api.py @@ -1,4 +1,5 @@ from fastapi import Request + from http import HTTPStatus from starlette.exceptions import HTTPException from starlette.responses import HTMLResponse, JSONResponse # type: ignore diff --git a/lnbits/extensions/satsdice/__init__.py b/lnbits/extensions/satsdice/__init__.py index b991b135..b70b570e 100644 --- a/lnbits/extensions/satsdice/__init__.py +++ b/lnbits/extensions/satsdice/__init__.py @@ -1,14 +1,30 @@ -from quart import Blueprint +import asyncio +from fastapi import APIRouter, FastAPI +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 -db = Database("ext_satsdice") +db = Database("satsdice_ext") + +satsdice_ext: APIRouter = APIRouter(prefix="/satsdice", tags=["satsdice"]) -satsdice_ext: Blueprint = Blueprint( - "satsdice", __name__, static_folder="static", template_folder="templates" -) +def satsdice_renderer(): + return template_renderer( + [ + "lnbits/extensions/satsdice/templates", + ] + ) from .views_api import * # noqa from .views import * # noqa from .lnurl import * # noqa +from .tasks import wait_for_paid_invoices + + +def satsdice_start(): + loop = asyncio.get_event_loop() + loop.create_task(catch_everything_and_restart(wait_for_paid_invoices)) diff --git a/lnbits/extensions/satsdice/crud.py b/lnbits/extensions/satsdice/crud.py index 78983142..c5434b39 100644 --- a/lnbits/extensions/satsdice/crud.py +++ b/lnbits/extensions/satsdice/crud.py @@ -1,23 +1,20 @@ 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 satsdiceWithdraw, HashCheck, satsdiceLink, satsdicePayment - -##################SATSDICE PAY LINKS +from .models import ( + satsdiceWithdraw, + HashCheck, + satsdiceLink, + satsdicePayment, + CreateSatsDiceLink, +) +from lnbits.helpers import urlsafe_short_hash async def create_satsdice_pay( - *, - wallet_id: str, - title: str, - base_url: str, - min_bet: str, - max_bet: str, - multiplier: int = 0, - chance: float = 0, - haircut: int = 0, + data: CreateSatsDiceLink, ) -> satsdiceLink: satsdice_id = urlsafe_short_hash() await db.execute( @@ -41,14 +38,14 @@ async def create_satsdice_pay( """, ( satsdice_id, - wallet_id, - title, - base_url, - min_bet, - max_bet, - multiplier, - chance, - haircut, + data.wallet_id, + data.title, + data.base_url, + data.min_bet, + data.max_bet, + data.multiplier, + data.chance, + data.haircut, int(datetime.now().timestamp()), ), ) @@ -111,9 +108,7 @@ async def delete_satsdice_pay(link_id: int) -> None: ##################SATSDICE PAYMENT LINKS -async def create_satsdice_payment( - *, satsdice_pay: str, value: int, payment_hash: str -) -> satsdicePayment: +async def create_satsdice_payment(data: CreateSatsDicePayment) -> satsdicePayment: await db.execute( """ INSERT INTO satsdice.satsdice_payment ( @@ -126,9 +121,9 @@ async def create_satsdice_payment( VALUES (?, ?, ?, ?, ?) """, ( - payment_hash, - satsdice_pay, - value, + data.payment_hash, + data.satsdice_pay, + data.value, False, False, ), @@ -165,9 +160,7 @@ async def update_satsdice_payment( ##################SATSDICE WITHDRAW LINKS -async def create_satsdice_withdraw( - *, payment_hash: str, satsdice_pay: str, value: int, used: int -) -> satsdiceWithdraw: +async def create_satsdice_withdraw(data: CreateSatsDiceWithdraw) -> satsdiceWithdraw: await db.execute( """ INSERT INTO satsdice.satsdice_withdraw ( @@ -182,13 +175,13 @@ async def create_satsdice_withdraw( VALUES (?, ?, ?, ?, ?, ?, ?) """, ( - payment_hash, - satsdice_pay, - value, + data.payment_hash, + data.satsdice_pay, + data.value, urlsafe_short_hash(), urlsafe_short_hash(), int(datetime.now().timestamp()), - used, + data.used, ), ) withdraw = await get_satsdice_withdraw(payment_hash, 0) diff --git a/lnbits/extensions/satsdice/lnurl.py b/lnbits/extensions/satsdice/lnurl.py index 1548de98..81c2a4a2 100644 --- a/lnbits/extensions/satsdice/lnurl.py +++ b/lnbits/extensions/satsdice/lnurl.py @@ -3,7 +3,6 @@ import hashlib import math from http import HTTPStatus from datetime import datetime -from quart import jsonify, url_for, request from lnbits.core.services import pay_invoice, create_invoice from lnbits.utils.exchange_rates import get_fiat_rate_satoshis diff --git a/lnbits/extensions/satsdice/models.py b/lnbits/extensions/satsdice/models.py index 5fe732dd..d77f8dc4 100644 --- a/lnbits/extensions/satsdice/models.py +++ b/lnbits/extensions/satsdice/models.py @@ -1,11 +1,14 @@ import json -from quart import url_for 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 fastapi.param_functions import Query +from pydantic.main import BaseModel +from pydantic import BaseModel +from typing import Optional class satsdiceLink(NamedTuple): @@ -120,3 +123,36 @@ class HashCheck(NamedTuple): @classmethod def from_row(cls, row: Row) -> "Hash": return cls(**dict(row)) + + +class CreateSatsDiceLink(BaseModel): + wallet_id: str = Query(None) + title: str = Query(None) + base_url: str = Query(None) + min_bet: str = Query(None) + max_bet: str = Query(None) + multiplier: int = Query(0) + chance: float = Query(0) + haircut: int = Query(0) + + +class CreateSatsDicePayment(BaseModel): + satsdice_pay: str = Query(None) + value: int = Query(0) + payment_hash: str = Query(None) + + +class CreateSatsDiceWithdraw(BaseModel): + payment_hash: str = Query(None) + satsdice_pay: str = Query(None) + value: int = Query(0) + used: int = Query(0) + + +class CreateSatsDiceWithdraws(BaseModel): + title: str = Query(None) + min_satsdiceable: int = Query(0) + max_satsdiceable: int = Query(0) + uses: int = Query(0) + wait_time: str = Query(None) + is_unique: bool = Query(False) diff --git a/lnbits/extensions/satsdice/templates/satsdice/index.html b/lnbits/extensions/satsdice/templates/satsdice/index.html index 3e8573b8..d92d43be 100644 --- a/lnbits/extensions/satsdice/templates/satsdice/index.html +++ b/lnbits/extensions/satsdice/templates/satsdice/index.html @@ -262,8 +262,7 @@ {% endblock %} {% block scripts %} {{ window_vars(user) }} - - +