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

86 lines
2.5 KiB
Python
Raw Normal View History

2021-10-20 06:49:59 +01:00
from http import HTTPStatus
2021-10-20 12:03:11 +01:00
from fastapi import Request
2021-10-20 06:49:59 +01:00
from fastapi.param_functions import Query
2021-10-20 12:03:11 +01:00
from fastapi.params import Depends
from starlette.exceptions import HTTPException
2021-10-20 06:49:59 +01:00
2021-10-20 12:03:11 +01:00
from lnbits.core.crud import get_user
from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key
2021-10-20 06:49:59 +01:00
from lnbits.extensions.lnurlpos import lnurlpos_ext
2021-10-20 12:03:11 +01:00
from lnbits.utils.exchange_rates import currencies
from . import lnurlpos_ext
2021-10-20 06:49:59 +01:00
from .crud import (
create_lnurlpos,
2021-10-20 12:03:11 +01:00
delete_lnurlpos,
2021-10-20 06:49:59 +01:00
get_lnurlpos,
get_lnurlposs,
2021-10-20 12:03:11 +01:00
update_lnurlpos,
2021-10-20 06:49:59 +01:00
)
from .models import createLnurlpos
@lnurlpos_ext.get("/api/v1/currencies")
async def api_list_currencies_available():
return list(currencies.keys())
#######################lnurlpos##########################
@lnurlpos_ext.post("/api/v1/lnurlpos")
@lnurlpos_ext.put("/api/v1/lnurlpos/{lnurlpos_id}")
async def api_lnurlpos_create_or_update(
data: createLnurlpos,
2021-10-20 12:03:11 +01:00
wallet: WalletTypeInfo = Depends(require_admin_key),
2021-10-20 06:49:59 +01:00
lnurlpos_id: str = Query(None),
):
if not lnurlpos_id:
lnurlpos = await create_lnurlpos(data)
return lnurlpos.dict()
else:
lnurlpos = await update_lnurlpos(data, lnurlpos_id=lnurlpos_id)
return lnurlpos.dict()
@lnurlpos_ext.get("/api/v1/lnurlpos")
2021-11-26 05:58:20 +00:00
async def api_lnurlposs_retrieve(wallet: WalletTypeInfo = Depends(get_key_type)):
2021-10-20 06:49:59 +01:00
wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids
try:
return [{**lnurlpos.dict()} for lnurlpos in await get_lnurlposs(wallet_ids)]
except:
return ""
@lnurlpos_ext.get("/api/v1/lnurlpos/{lnurlpos_id}")
async def api_lnurlpos_retrieve(
request: Request,
wallet: WalletTypeInfo = Depends(get_key_type),
lnurlpos_id: str = Query(None),
):
lnurlpos = await get_lnurlpos(lnurlpos_id)
if not lnurlpos:
raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="lnurlpos does not exist"
)
if not lnurlpos.lnurl_toggle:
return {**lnurlpos.dict()}
return {**lnurlpos.dict(), **{"lnurl": lnurlpos.lnurl(request=request)}}
@lnurlpos_ext.delete("/api/v1/lnurlpos/{lnurlpos_id}")
async def api_lnurlpos_delete(
2021-11-26 05:58:20 +00:00
wallet: WalletTypeInfo = Depends(require_admin_key), lnurlpos_id: str = Query(None)
2021-10-20 06:49:59 +01:00
):
lnurlpos = await get_lnurlpos(lnurlpos_id)
if not lnurlpos:
raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="Wallet link does not exist."
)
await delete_lnurlpos(lnurlpos_id)
return "", HTTPStatus.NO_CONTENT