Work on api

This commit is contained in:
Black Coffee 2022-09-29 16:06:45 +01:00
parent 55de179730
commit b5157ad8dc

View file

@ -1,8 +1,10 @@
import math
from http import HTTPStatus
import json
import httpx
import random
import os
import time
from fastapi import Query
from fastapi.params import Depends
from lnurl import decode as decode_lnurl
@ -44,7 +46,6 @@ async def api_link_create_or_update(
):
if gerty_id:
gerty = await get_gerty(gerty_id)
logger.debug(gerty)
if not gerty:
raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="Gerty does not exist"
@ -63,6 +64,7 @@ async def api_link_create_or_update(
return {**gerty.dict()}
@gerty_ext.delete("/api/v1/gerty/{gerty_id}")
async def api_gerty_delete(
gerty_id: str, wallet: WalletTypeInfo = Depends(require_admin_key)
@ -86,33 +88,39 @@ async def api_gerty_delete(
with open(os.path.join(LNBITS_PATH, 'extensions/gerty/static/satoshi.json')) as fd:
satoshiQuotes = json.load(fd)
@gerty_ext.get("/api/v1/gerty/satoshiquote", status_code=HTTPStatus.OK)
async def api_gerty_satoshi():
return satoshiQuotes[random.randint(0, 100)]
@gerty_ext.get("/api/v1/gerty/{gerty_id}")
async def api_gerty_json(
gerty_id: str
gerty_id: str,
p: int = None # page number
):
gerty = await get_gerty(gerty_id)
logger.debug(gerty.wallet)
if not gerty:
raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="Gerty does not exist."
)
gertyReturn = []
# Get Wallet info
wallets = []
if gerty.lnbits_wallets != "":
for lnbits_wallet in json.loads(gerty.lnbits_wallets):
wallet = await get_wallet_for_key(key=lnbits_wallet)
if wallet:
wallets.append({
"name": wallet.name,
"balance": wallet.balance_msat,
"inkey": wallet.inkey,
})
display_preferences = json.loads(gerty.display_preferences)
enabled_screen_count = 0
enabled_screens = []
for screen_slug in display_preferences:
is_screen_enabled = display_preferences[screen_slug]
if is_screen_enabled:
enabled_screen_count += 1
enabled_screens.append(screen_slug)
get_screen_text(p, enabled_screens)
next_screen_number = 0 if ((p + 1) >= enabled_screen_count) else p + 1;
# Get Satoshi quotes
satoshi = []
@ -160,6 +168,51 @@ async def api_gerty_json(
# if r:
# ln.append(r.json())
return {"name":gerty.name}
return {
"settings": {
"refreshTime": gerty.refresh_time,
"requestTimestamp": math.ceil(time.time()),
"nextScreenNumber": next_screen_number,
"name": gerty.name
},
"screen": {
"slug": "x",
"group": "x",
"text": [
{
"value": "Craig Steven Wright is a liar and\na fraud",
"size": 20,
"x": 20,
"y": 70
}
],
}
}
def get_screen_text(screen_num: int, display_preferences: dict):
# first get the relevant slug from the display_preferences
screen_slug = list(display_preferences)[screen_num]
# logger.debug('screen_slug')
# logger.debug(screen_slug)
if screen_slug == "lnbits_wallets_balance":
return screen_slug
def get_lnbits_wallet_balances(gerty):
# Get Wallet info
wallets = []
if gerty.lnbits_wallets != "":
logger.debug("wallets")
logger.debug(gerty.lnbits_wallets)
for lnbits_wallet in json.loads(gerty.lnbits_wallets):
wallet = await get_wallet_for_key(key=lnbits_wallet)
if wallet:
wallets.append({
"name": wallet.name,
"balance": wallet.balance_msat,
"inkey": wallet.inkey,
})
logger.debug(lnbits_wallet)
return wallets