From f601ca38f69759a24edb48f4f9c5a63b3b1b3817 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Thu, 23 Feb 2023 11:27:08 +0200 Subject: [PATCH] feat: add `ws_filter_subscribe` --- views_api.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/views_api.py b/views_api.py index 4a12998..d7de7e8 100644 --- a/views_api.py +++ b/views_api.py @@ -103,6 +103,25 @@ async def api_subscribe(filters: Filters): media_type="text/event-stream", ) + +@nostrclient_ext.websocket("/api/v1/filters") +async def ws_filter_subscribe(websocket: WebSocket): + await websocket.accept() + while True: + json_data = await websocket.receive_text() + print('### nostrclient', json_data) + try: + data = json.loads(json_data) + filters = data if isinstance(data, list) else [data] + filters = [Filter.parse_obj(f) for f in filters] + nostr_filters = init_filters(filters) + async for message in event_getter(nostr_filters): + await websocket.send_text(message) + + except Exception as e: + logger.warning(e) + + def init_filters(filters: List[Filter]): filter_list = [] for filter in filters: