lnbits-legend/lnbits/extensions/lnurldevice/views_api.py

99 lines
3 KiB
Python
Raw Normal View History

2022-01-21 21:23:32 +00:00
from http import HTTPStatus
from fastapi import Request
from fastapi.param_functions import Query
from fastapi.params import Depends
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.extensions.lnurldevice import lnurldevice_ext
from lnbits.utils.exchange_rates import currencies
from . import lnurldevice_ext
2022-10-27 01:10:03 +01:00
from .crud import (
create_lnurldevice,
delete_lnurldevice,
get_lnurldevice,
get_lnurldevices,
update_lnurldevice,
)
2022-01-21 21:23:32 +00:00
from .models import createLnurldevice
@lnurldevice_ext.get("/api/v1/currencies")
async def api_list_currencies_available():
return list(currencies.keys())
#######################lnurldevice##########################
@lnurldevice_ext.post("/api/v1/lnurlpos")
@lnurldevice_ext.put("/api/v1/lnurlpos/{lnurldevice_id}")
async def api_lnurldevice_create_or_update(
2022-10-07 13:46:40 +01:00
req: Request,
2022-01-21 21:23:32 +00:00
data: createLnurldevice,
wallet: WalletTypeInfo = Depends(require_admin_key),
lnurldevice_id: str = Query(None),
):
if not lnurldevice_id:
lnurldevice = await create_lnurldevice(data)
2022-10-26 20:19:04 +01:00
return {**lnurldevice.dict(), **{"switches": lnurldevice.switches(req)}}
2022-01-21 21:23:32 +00:00
else:
lnurldevice = await update_lnurldevice(data, lnurldevice_id=lnurldevice_id)
2022-10-26 20:19:04 +01:00
return {**lnurldevice.dict(), **{"switches": lnurldevice.switches(req)}}
2022-01-21 21:23:32 +00:00
@lnurldevice_ext.get("/api/v1/lnurlpos")
2022-10-07 23:18:57 +01:00
async def api_lnurldevices_retrieve(
req: Request, wallet: WalletTypeInfo = Depends(get_key_type)
):
2022-01-21 21:23:32 +00:00
wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids
try:
2022-01-30 19:43:30 +00:00
return [
2022-10-26 20:19:04 +01:00
{**lnurldevice.dict(), **{"switches": lnurldevice.switches(req)}}
2022-10-07 23:18:57 +01:00
for lnurldevice in await get_lnurldevices(wallet_ids)
2022-01-30 19:43:30 +00:00
]
2022-01-21 21:23:32 +00:00
except:
2022-10-07 11:29:06 +01:00
try:
return [
2022-10-07 23:18:57 +01:00
{**lnurldevice.dict()}
for lnurldevice in await get_lnurldevices(wallet_ids)
2022-10-07 11:29:06 +01:00
]
except:
return ""
2022-01-21 21:23:32 +00:00
@lnurldevice_ext.get("/api/v1/lnurlpos/{lnurldevice_id}")
async def api_lnurldevice_retrieve(
2022-10-07 13:46:40 +01:00
req: Request,
2022-01-21 21:23:32 +00:00
wallet: WalletTypeInfo = Depends(get_key_type),
lnurldevice_id: str = Query(None),
):
lnurldevice = await get_lnurldevice(lnurldevice_id)
if not lnurldevice:
raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="lnurldevice does not exist"
)
if not lnurldevice.lnurl_toggle:
return {**lnurldevice.dict()}
2022-10-26 20:19:04 +01:00
return {**lnurldevice.dict(), **{"switches": lnurldevice.switches(req)}}
2022-01-21 21:23:32 +00:00
@lnurldevice_ext.delete("/api/v1/lnurlpos/{lnurldevice_id}")
async def api_lnurldevice_delete(
2022-01-30 19:43:30 +00:00
wallet: WalletTypeInfo = Depends(require_admin_key),
lnurldevice_id: str = Query(None),
2022-01-21 21:23:32 +00:00
):
lnurldevice = await get_lnurldevice(lnurldevice_id)
if not lnurldevice:
raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="Wallet link does not exist."
)
await delete_lnurldevice(lnurldevice_id)
return "", HTTPStatus.NO_CONTENT