2021-10-13 16:47:24 +01:00
|
|
|
from base64 import b64decode
|
|
|
|
from functools import wraps
|
2021-10-15 19:55:24 +02:00
|
|
|
from fastapi.param_functions import Security
|
|
|
|
|
|
|
|
from fastapi.security.api_key import APIKeyHeader
|
2021-10-13 16:47:24 +01:00
|
|
|
|
|
|
|
from lnbits.core.crud import get_wallet_for_key
|
2021-10-15 19:55:24 +02:00
|
|
|
from fastapi import Request, status
|
2021-10-13 16:47:24 +01:00
|
|
|
from starlette.exceptions import HTTPException
|
2021-10-15 19:55:24 +02:00
|
|
|
from starlette.responses import HTMLResponse, JSONResponse
|
|
|
|
|
|
|
|
from lnbits.decorators import WalletTypeInfo, get_key_type # type: ignore
|
|
|
|
|
|
|
|
|
|
|
|
api_key_header_auth = APIKeyHeader(name="AUTHORIZATION", auto_error=False, description="Admin or Invoice key for LNDHub API's")
|
|
|
|
async def check_wallet(r: Request, api_key_header_auth: str = Security(api_key_header_auth)) -> WalletTypeInfo:
|
|
|
|
if not api_key_header_auth:
|
|
|
|
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST)
|
|
|
|
|
|
|
|
t = api_key_header_auth.split(" ")[1]
|
|
|
|
_, token = b64decode(t).decode("utf-8").split(":")
|
|
|
|
|
|
|
|
return await get_key_type(r, api_key_header=token)
|
|
|
|
|