mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-24 22:58:46 +01:00
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
|
import calendar
|
||
|
import datetime
|
||
|
|
||
|
import httpx
|
||
|
from loguru import logger
|
||
|
|
||
|
from lnbits.core.services import fee_reserve, get_wallet
|
||
|
|
||
|
|
||
|
async def check_balance(data) -> bool:
|
||
|
# check if we can pay the invoice before we create the actual swap on boltz
|
||
|
amount_msat = data.amount * 1000
|
||
|
fee_reserve_msat = fee_reserve(amount_msat)
|
||
|
wallet = await get_wallet(data.wallet)
|
||
|
assert wallet
|
||
|
if wallet.balance_msat - fee_reserve_msat < amount_msat:
|
||
|
return False
|
||
|
return True
|
||
|
|
||
|
|
||
|
def get_timestamp():
|
||
|
date = datetime.datetime.utcnow()
|
||
|
return calendar.timegm(date.utctimetuple())
|
||
|
|
||
|
|
||
|
def req_wrap(funcname, *args, **kwargs):
|
||
|
try:
|
||
|
try:
|
||
|
func = getattr(httpx, funcname)
|
||
|
except AttributeError:
|
||
|
logger.error('httpx function not found "%s"' % funcname)
|
||
|
else:
|
||
|
res = func(*args, timeout=30, **kwargs)
|
||
|
res.raise_for_status()
|
||
|
return res
|
||
|
except httpx.RequestError as exc:
|
||
|
msg = f"Unreachable: {exc.request.url!r}."
|
||
|
logger.error(msg)
|
||
|
raise
|
||
|
except httpx.HTTPStatusError as exc:
|
||
|
msg = f"HTTP Status Error: {exc.response.status_code} while requesting {exc.request.url!r}."
|
||
|
logger.error(msg)
|
||
|
logger.error(exc.response.json()["error"])
|
||
|
raise
|