From cbbabf2ce84f56d4fa0a741c656382704a85cf0c Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Fri, 3 Feb 2023 16:37:27 +0200 Subject: [PATCH] feat: partial NIP11 --- models.py | 10 ++++++++++ views_api.py | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/models.py b/models.py index c7ec48f..a5fca94 100644 --- a/models.py +++ b/models.py @@ -20,6 +20,16 @@ class NostrRelay(BaseModel): def from_row(cls, row: Row) -> "NostrRelay": return cls(**dict(row)) +class NostrRelayInfo(BaseModel): + name: Optional[str] + description: Optional[str] + pubkey: Optional[str] + contact: Optional[str] = "https://t.me/lnbits" + supported_nips: List[str] = ["NIP01", "NIP09", "NIP11"] + software: Optional[str] = "LNbist" + version: Optional[str] + + class NostrEventType(str, Enum): EVENT = "EVENT" REQ = "REQ" diff --git a/views_api.py b/views_api.py index 7a86995..60c268c 100644 --- a/views_api.py +++ b/views_api.py @@ -1,10 +1,12 @@ from http import HTTPStatus from fastapi import Query, WebSocket +from fastapi.responses import JSONResponse from loguru import logger from . import nostrrelay_ext from .client_manager import NostrClientConnection, NostrClientManager +from .models import NostrRelayInfo client_manager = NostrClientManager() @@ -20,6 +22,17 @@ async def websocket_endpoint(websocket: WebSocket): client_manager.remove_client(client) +@nostrrelay_ext.get("/client", status_code=HTTPStatus.OK) +async def api_nostrrelay_info(): + headers = { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Headers": "*", + "Access-Control-Allow-Methods": "GET" + } + info = NostrRelayInfo() + return JSONResponse(content=dict(info), headers=headers) + + @nostrrelay_ext.get("/api/v1/enable", status_code=HTTPStatus.OK) async def api_nostrrelay(enable: bool = Query(True)): return await enable_relay(enable)