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()
|
gerty_id = urlsafe_short_hash()
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
INSERT INTO gerty.gertys (id, name, wallet, lnbits_wallets, sats_quote, exchange, onchain_stats, ln_stats)
|
INSERT INTO gerty.gertys (id, name, wallet, lnbits_wallets, mempool_endpoint, sats_quote, exchange, onchain_stats, ln_stats)
|
||||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
""",
|
""",
|
||||||
(
|
(
|
||||||
gerty_id,
|
gerty_id,
|
||||||
data.name,
|
data.name,
|
||||||
data.wallet,
|
data.wallet,
|
||||||
data.lnbits_wallets,
|
data.lnbits_wallets,
|
||||||
|
data.mempool_endpoint,
|
||||||
data.sats_quote,
|
data.sats_quote,
|
||||||
data.exchange,
|
data.exchange,
|
||||||
data.onchain_stats,
|
data.onchain_stats,
|
||||||
|
|
|
@ -11,7 +11,7 @@ class Gerty(BaseModel):
|
||||||
name: str
|
name: str
|
||||||
wallet: str
|
wallet: str
|
||||||
lnbits_wallets: str = Query(None) # Wallets to keep an eye on, {"wallet-id": "wallet-read-key, etc"}
|
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
|
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
|
exchange: str = Query(None) # BTC <-> Fiat exchange rate to pull ie "USD", in 0.0001 and sats
|
||||||
onchain_stats: bool = Query(False) # Onchain stats
|
onchain_stats: bool = Query(False) # Onchain stats
|
||||||
|
|
|
@ -47,11 +47,21 @@
|
||||||
dense
|
dense
|
||||||
size="xs"
|
size="xs"
|
||||||
icon="sentiment_satisfied"
|
icon="sentiment_satisfied"
|
||||||
:color="($q.dark.isActive) ? 'grey-7' : 'grey-5'"
|
color="green"
|
||||||
type="a"
|
type="a"
|
||||||
:href="props.row.gerty"
|
:href="props.row.gerty"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
><q-tooltip>Launch software Gerty</q-tooltip></q-btn>
|
><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>
|
||||||
<q-td v-for="col in props.cols" :key="col.name" :props="props">
|
<q-td v-for="col in props.cols" :key="col.name" :props="props">
|
||||||
{{ (col.name == 'tip_options' && col.value ?
|
{{ (col.name == 'tip_options' && col.value ?
|
||||||
|
@ -138,6 +148,12 @@
|
||||||
:options="currencyOptions"
|
:options="currencyOptions"
|
||||||
label="Exchange rate"
|
label="Exchange rate"
|
||||||
></q-select>
|
></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
|
<q-toggle
|
||||||
v-model="formDialog.data.sats_quote"
|
v-model="formDialog.data.sats_quote"
|
||||||
label="Satoshi Quotes"
|
label="Satoshi Quotes"
|
||||||
|
@ -184,6 +200,7 @@
|
||||||
)
|
)
|
||||||
obj.fsat = new Intl.NumberFormat(LOCALE).format(obj.amount)
|
obj.fsat = new Intl.NumberFormat(LOCALE).format(obj.amount)
|
||||||
obj.gerty = ['/gerty/', obj.id].join('')
|
obj.gerty = ['/gerty/', obj.id].join('')
|
||||||
|
obj.gertyJson = ['/gerty/api/v1/gerty/', obj.id].join('')
|
||||||
return obj
|
return obj
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -389,6 +406,12 @@
|
||||||
label: 'Sats Quote',
|
label: 'Sats Quote',
|
||||||
field: 'sats_quote'
|
field: 'sats_quote'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'mempool_endpoint',
|
||||||
|
align: 'left',
|
||||||
|
label: 'Mempool Endpoint',
|
||||||
|
field: 'mempool_endpoint'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'onchain_stats',
|
name: 'onchain_stats',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -411,7 +434,8 @@
|
||||||
data: {sats_quote: false,
|
data: {sats_quote: false,
|
||||||
onchain_stats: false,
|
onchain_stats: false,
|
||||||
ln_stats: false,
|
ln_stats: false,
|
||||||
lnbits_wallets:[]}
|
lnbits_wallets:[],
|
||||||
|
mempool_endpoint: "https://mempool.space"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -420,7 +444,8 @@
|
||||||
this.formDialog.data = {sats_quote: false,
|
this.formDialog.data = {sats_quote: false,
|
||||||
onchain_stats: false,
|
onchain_stats: false,
|
||||||
ln_stats: false,
|
ln_stats: false,
|
||||||
lnbits_wallets:[]}
|
lnbits_wallets:[],
|
||||||
|
mempool_endpoint: "https://mempool.space"}
|
||||||
},
|
},
|
||||||
getGertys: function () {
|
getGertys: function () {
|
||||||
var self = this
|
var self = this
|
||||||
|
@ -443,6 +468,7 @@
|
||||||
this.formDialog.data.wallet = gerty.wallet
|
this.formDialog.data.wallet = gerty.wallet
|
||||||
this.formDialog.data.lnbits_wallets = JSON.parse(gerty.lnbits_wallets)
|
this.formDialog.data.lnbits_wallets = JSON.parse(gerty.lnbits_wallets)
|
||||||
this.formDialog.data.exchange = gerty.exchange,
|
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.sats_quote = Boolean(gerty.sats_quote)
|
||||||
this.formDialog.data.onchain_stats = Boolean(gerty.onchain_stats)
|
this.formDialog.data.onchain_stats = Boolean(gerty.onchain_stats)
|
||||||
this.formDialog.data.ln_stats = Boolean(gerty.ln_stats)
|
this.formDialog.data.ln_stats = Boolean(gerty.ln_stats)
|
||||||
|
@ -469,6 +495,7 @@
|
||||||
lnbits_wallets: JSON.stringify(this.formDialog.data.lnbits_wallets),
|
lnbits_wallets: JSON.stringify(this.formDialog.data.lnbits_wallets),
|
||||||
sats_quote: this.formDialog.data.sats_quote,
|
sats_quote: this.formDialog.data.sats_quote,
|
||||||
exchange: this.formDialog.data.exchange,
|
exchange: this.formDialog.data.exchange,
|
||||||
|
mempool_endpoint: this.formDialog.data.mempool_endpoint,
|
||||||
onchain_stats: this.formDialog.data.onchain_stats,
|
onchain_stats: this.formDialog.data.onchain_stats,
|
||||||
ln_stats: this.formDialog.data.ln_stats
|
ln_stats: this.formDialog.data.ln_stats
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,53 +107,63 @@ async def api_gerty_json(
|
||||||
if gerty.lnbits_wallets != "":
|
if gerty.lnbits_wallets != "":
|
||||||
for lnbits_wallet in json.loads(gerty.lnbits_wallets):
|
for lnbits_wallet in json.loads(gerty.lnbits_wallets):
|
||||||
wallet = await get_wallet_for_key(key=lnbits_wallet)
|
wallet = await get_wallet_for_key(key=lnbits_wallet)
|
||||||
wallets.append({
|
if wallet:
|
||||||
"name": wallet.name,
|
wallets.append({
|
||||||
"balance": wallet.balance_msat,
|
"name": wallet.name,
|
||||||
})
|
"balance": wallet.balance_msat,
|
||||||
gertyReturn.append(wallets)
|
"inkey": wallet.inkey,
|
||||||
|
})
|
||||||
|
gertyReturn.append(wallets)
|
||||||
|
|
||||||
#Get Satoshi quotes
|
#Get Satoshi quotes
|
||||||
satoshi = ['sats_quote']
|
satoshi = ['sats_quote']
|
||||||
if gerty.sats_quote:
|
if gerty.sats_quote:
|
||||||
satoshi.append(await api_gerty_satoshi())
|
quote = await api_gerty_satoshi()
|
||||||
gertyReturn.append(satoshi)
|
if quote:
|
||||||
|
satoshi.append(await api_gerty_satoshi())
|
||||||
|
gertyReturn.append(satoshi)
|
||||||
|
|
||||||
#Get Exchange Value
|
#Get Exchange Value
|
||||||
exchange = ['exchange']
|
exchange = ['exchange']
|
||||||
if gerty.exchange != "":
|
if gerty.exchange != "":
|
||||||
try:
|
try:
|
||||||
exchange.append({
|
amount = await satoshis_amount_as_fiat(100000000, gerty.exchange)
|
||||||
"fiat": gerty.exchange,
|
if amount:
|
||||||
"amount": await satoshis_amount_as_fiat(100000000, gerty.exchange),
|
exchange.append({
|
||||||
})
|
"fiat": gerty.exchange,
|
||||||
|
"amount": amount,
|
||||||
|
})
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
gertyReturn.append(exchange)
|
gertyReturn.append(exchange)
|
||||||
|
|
||||||
onchain = ['onchain']
|
onchain = ['onchain']
|
||||||
if gerty.onchain_stats:
|
if gerty.onchain_stats and isinstance(gerty.mempool_endpoint, str):
|
||||||
async with httpx.AsyncClient() as client:
|
async with httpx.AsyncClient() as client:
|
||||||
difficulty = ['difficulty']
|
difficulty = ['difficulty']
|
||||||
r = await client.get(gerty.mempool_endpoint + "/api/v1/difficulty-adjustment")
|
r = await client.get(gerty.mempool_endpoint + "/api/v1/difficulty-adjustment")
|
||||||
difficulty.append(r.json())
|
if r:
|
||||||
onchain.append(difficulty)
|
difficulty.append(r.json())
|
||||||
|
onchain.append(difficulty)
|
||||||
mempool = ['mempool']
|
mempool = ['mempool']
|
||||||
r = await client.get(gerty.mempool_endpoint + "/api/v1/fees/mempool-blocks")
|
r = await client.get(gerty.mempool_endpoint + "/api/v1/fees/mempool-blocks")
|
||||||
mempool.append(r.json())
|
if r:
|
||||||
onchain.append(mempool)
|
mempool.append(r.json())
|
||||||
|
onchain.append(mempool)
|
||||||
threed = ['threed']
|
threed = ['threed']
|
||||||
r = await client.get(gerty.mempool_endpoint + "/api/v1/mining/hashrate/3d")
|
r = await client.get(gerty.mempool_endpoint + "/api/v1/mining/hashrate/3d")
|
||||||
threed.append(r.json())
|
if r:
|
||||||
onchain.append(threed)
|
threed.append(r.json())
|
||||||
gertyReturn.append(onchain)
|
onchain.append(threed)
|
||||||
|
gertyReturn.append(onchain)
|
||||||
|
|
||||||
ln = ['ln']
|
ln = ['ln']
|
||||||
if gerty.ln_stats:
|
if gerty.ln_stats and isinstance(gerty.mempool_endpoint, str):
|
||||||
async with httpx.AsyncClient() as client:
|
async with httpx.AsyncClient() as client:
|
||||||
r = await client.get(gerty.mempool_endpoint + "/api/v1/lightning/statistics/latest")
|
r = await client.get(gerty.mempool_endpoint + "/api/v1/lightning/statistics/latest")
|
||||||
ln.append(r.json())
|
if r:
|
||||||
gertyReturn.append(ln)
|
ln.append(r.json())
|
||||||
|
gertyReturn.append(ln)
|
||||||
return gertyReturn
|
return gertyReturn
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue