mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-25 07:07:48 +01:00
Added some error checking
This commit is contained in:
parent
938024fea2
commit
c6cc6d34e1
4 changed files with 67 additions and 29 deletions
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue