Added some error checking

This commit is contained in:
ben 2022-09-26 19:30:40 +01:00
parent 938024fea2
commit c6cc6d34e1
4 changed files with 67 additions and 29 deletions

View file

@ -10,14 +10,15 @@ async def create_gerty(wallet_id: str, data: Gerty) -> Gerty:
gerty_id = urlsafe_short_hash()
await db.execute(
"""
INSERT INTO gerty.gertys (id, name, wallet, lnbits_wallets, sats_quote, exchange, onchain_stats, ln_stats)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
INSERT INTO gerty.gertys (id, name, wallet, lnbits_wallets, mempool_endpoint, sats_quote, exchange, onchain_stats, ln_stats)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
""",
(
gerty_id,
data.name,
data.wallet,
data.lnbits_wallets,
data.mempool_endpoint,
data.sats_quote,
data.exchange,
data.onchain_stats,

View file

@ -11,7 +11,7 @@ class Gerty(BaseModel):
name: str
wallet: str
lnbits_wallets: str = Query(None) # Wallets to keep an eye on, {"wallet-id": "wallet-read-key, etc"}
mempool_endpoint: str = Query("https://mempool.space") # Mempool endpoint to use
mempool_endpoint: str = Query(None) # Mempool endpoint to use
sats_quote: bool = Query(False) # Fetch Satoshi quotes
exchange: str = Query(None) # BTC <-> Fiat exchange rate to pull ie "USD", in 0.0001 and sats
onchain_stats: bool = Query(False) # Onchain stats

View file

@ -47,11 +47,21 @@
dense
size="xs"
icon="sentiment_satisfied"
:color="($q.dark.isActive) ? 'grey-7' : 'grey-5'"
color="green"
type="a"
:href="props.row.gerty"
target="_blank"
><q-tooltip>Launch software Gerty</q-tooltip></q-btn>
<q-btn
unelevated
dense
size="xs"
icon="code"
color="pink"
type="a"
:href="props.row.gertyJson"
target="_blank"
><q-tooltip>Launch software Gerty</q-tooltip></q-btn>
</q-td>
<q-td v-for="col in props.cols" :key="col.name" :props="props">
{{ (col.name == 'tip_options' && col.value ?
@ -138,6 +148,12 @@
:options="currencyOptions"
label="Exchange rate"
></q-select>
<q-input
filled
dense
v-model.trim="formDialog.data.mempool_endpoint"
label="Mempool link"
><q-tooltip>Used for getting onchain/ln stats</q-tooltip></q-input>
<q-toggle
v-model="formDialog.data.sats_quote"
label="Satoshi Quotes"
@ -184,6 +200,7 @@
)
obj.fsat = new Intl.NumberFormat(LOCALE).format(obj.amount)
obj.gerty = ['/gerty/', obj.id].join('')
obj.gertyJson = ['/gerty/api/v1/gerty/', obj.id].join('')
return obj
}
@ -389,6 +406,12 @@
label: 'Sats Quote',
field: 'sats_quote'
},
{
name: 'mempool_endpoint',
align: 'left',
label: 'Mempool Endpoint',
field: 'mempool_endpoint'
},
{
name: 'onchain_stats',
align: 'left',
@ -411,7 +434,8 @@
data: {sats_quote: false,
onchain_stats: false,
ln_stats: false,
lnbits_wallets:[]}
lnbits_wallets:[],
mempool_endpoint: "https://mempool.space"}
}
}
},
@ -420,7 +444,8 @@
this.formDialog.data = {sats_quote: false,
onchain_stats: false,
ln_stats: false,
lnbits_wallets:[]}
lnbits_wallets:[],
mempool_endpoint: "https://mempool.space"}
},
getGertys: function () {
var self = this
@ -443,6 +468,7 @@
this.formDialog.data.wallet = gerty.wallet
this.formDialog.data.lnbits_wallets = JSON.parse(gerty.lnbits_wallets)
this.formDialog.data.exchange = gerty.exchange,
this.formDialog.data.mempool_endpoint = gerty.mempool_endpoint,
this.formDialog.data.sats_quote = Boolean(gerty.sats_quote)
this.formDialog.data.onchain_stats = Boolean(gerty.onchain_stats)
this.formDialog.data.ln_stats = Boolean(gerty.ln_stats)
@ -469,6 +495,7 @@
lnbits_wallets: JSON.stringify(this.formDialog.data.lnbits_wallets),
sats_quote: this.formDialog.data.sats_quote,
exchange: this.formDialog.data.exchange,
mempool_endpoint: this.formDialog.data.mempool_endpoint,
onchain_stats: this.formDialog.data.onchain_stats,
ln_stats: this.formDialog.data.ln_stats
}

View file

@ -107,53 +107,63 @@ async def api_gerty_json(
if gerty.lnbits_wallets != "":
for lnbits_wallet in json.loads(gerty.lnbits_wallets):
wallet = await get_wallet_for_key(key=lnbits_wallet)
wallets.append({
"name": wallet.name,
"balance": wallet.balance_msat,
})
gertyReturn.append(wallets)
if wallet:
wallets.append({
"name": wallet.name,
"balance": wallet.balance_msat,
"inkey": wallet.inkey,
})
gertyReturn.append(wallets)
#Get Satoshi quotes
satoshi = ['sats_quote']
if gerty.sats_quote:
satoshi.append(await api_gerty_satoshi())
gertyReturn.append(satoshi)
quote = await api_gerty_satoshi()
if quote:
satoshi.append(await api_gerty_satoshi())
gertyReturn.append(satoshi)
#Get Exchange Value
exchange = ['exchange']
if gerty.exchange != "":
try:
exchange.append({
"fiat": gerty.exchange,
"amount": await satoshis_amount_as_fiat(100000000, gerty.exchange),
})
amount = await satoshis_amount_as_fiat(100000000, gerty.exchange)
if amount:
exchange.append({
"fiat": gerty.exchange,
"amount": amount,
})
except:
pass
gertyReturn.append(exchange)
gertyReturn.append(exchange)
onchain = ['onchain']
if gerty.onchain_stats:
if gerty.onchain_stats and isinstance(gerty.mempool_endpoint, str):
async with httpx.AsyncClient() as client:
difficulty = ['difficulty']
r = await client.get(gerty.mempool_endpoint + "/api/v1/difficulty-adjustment")
difficulty.append(r.json())
onchain.append(difficulty)
if r:
difficulty.append(r.json())
onchain.append(difficulty)
mempool = ['mempool']
r = await client.get(gerty.mempool_endpoint + "/api/v1/fees/mempool-blocks")
mempool.append(r.json())
onchain.append(mempool)
if r:
mempool.append(r.json())
onchain.append(mempool)
threed = ['threed']
r = await client.get(gerty.mempool_endpoint + "/api/v1/mining/hashrate/3d")
threed.append(r.json())
onchain.append(threed)
gertyReturn.append(onchain)
if r:
threed.append(r.json())
onchain.append(threed)
gertyReturn.append(onchain)
ln = ['ln']
if gerty.ln_stats:
if gerty.ln_stats and isinstance(gerty.mempool_endpoint, str):
async with httpx.AsyncClient() as client:
r = await client.get(gerty.mempool_endpoint + "/api/v1/lightning/statistics/latest")
ln.append(r.json())
gertyReturn.append(ln)
if r:
ln.append(r.json())
gertyReturn.append(ln)
return gertyReturn