nostrrelay/views.py
2023-02-21 16:20:19 +02:00

40 lines
1.3 KiB
Python

from http import HTTPStatus
from fastapi import Depends, Request
from fastapi.exceptions import HTTPException
from fastapi.templating import Jinja2Templates
from starlette.responses import HTMLResponse
from lnbits.core.models import User
from lnbits.decorators import check_user_exists
from . import nostrrelay_ext, nostrrelay_renderer
from .crud import get_public_relay
from .helpers import relay_info_response
templates = Jinja2Templates(directory="templates")
@nostrrelay_ext.get("/", response_class=HTMLResponse)
async def index(request: Request, user: User = Depends(check_user_exists)):
return nostrrelay_renderer().TemplateResponse(
"nostrrelay/index.html", {"request": request, "user": user.dict()}
)
@nostrrelay_ext.get("/{relay_id}")
async def nostrrelay(request: Request, relay_id: str):
relay_public_data = await get_public_relay(relay_id)
if not relay_public_data:
raise HTTPException(
status_code=HTTPStatus.NOT_FOUND,
detail="Cannot find relay",
)
if request.headers.get("accept") == "application/nostr+json":
return relay_info_response(relay_public_data)
return nostrrelay_renderer().TemplateResponse(
"nostrrelay/public.html", {"request": request, "relay": relay_public_data}
)