2022-01-21 21:23:32 +00:00
|
|
|
from http import HTTPStatus
|
|
|
|
|
2023-01-05 14:11:17 +01:00
|
|
|
from fastapi import Depends, HTTPException, Query, Request
|
2022-01-21 21:23:32 +00:00
|
|
|
|
|
|
|
from lnbits.core.crud import get_user
|
|
|
|
from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key
|
|
|
|
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_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:
|
2023-01-05 14:11:17 +01:00
|
|
|
lnurldevice = await update_lnurldevice(lnurldevice_id, **data.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.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)
|
|
|
|
):
|
2023-01-05 14:11:17 +01:00
|
|
|
user = await get_user(wallet.wallet.user)
|
|
|
|
wallet_ids = user.wallet_ids if user else []
|
2022-01-21 21:23:32 +00:00
|
|
|
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
|
|
|
|
|
|
|
|
2023-01-05 14:11:17 +01:00
|
|
|
@lnurldevice_ext.get(
|
|
|
|
"/api/v1/lnurlpos/{lnurldevice_id}", dependencies=[Depends(get_key_type)]
|
|
|
|
)
|
2022-01-21 21:23:32 +00:00
|
|
|
async def api_lnurldevice_retrieve(
|
2022-10-07 13:46:40 +01:00
|
|
|
req: Request,
|
2022-01-21 21:23:32 +00:00
|
|
|
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"
|
|
|
|
)
|
2022-10-26 20:19:04 +01:00
|
|
|
return {**lnurldevice.dict(), **{"switches": lnurldevice.switches(req)}}
|
2022-01-21 21:23:32 +00:00
|
|
|
|
|
|
|
|
2023-01-05 14:11:17 +01:00
|
|
|
@lnurldevice_ext.delete(
|
|
|
|
"/api/v1/lnurlpos/{lnurldevice_id}", dependencies=[Depends(require_admin_key)]
|
|
|
|
)
|
|
|
|
async def api_lnurldevice_delete(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
|