From c97fcec6e916f9db1264e6699511fd679f8060a4 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Thu, 23 Feb 2023 11:26:42 +0200 Subject: [PATCH] refactor: extract `init_filters` and `event_getter` --- views_api.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/views_api.py b/views_api.py index 6ecb02a..4a12998 100644 --- a/views_api.py +++ b/views_api.py @@ -2,13 +2,15 @@ from http import HTTPStatus import asyncio import ssl import json -from fastapi import Request +from typing import List +from fastapi import Request, WebSocket from fastapi.param_functions import Query from fastapi.params import Depends from fastapi.responses import JSONResponse from starlette.exceptions import HTTPException from sse_starlette.sse import EventSourceResponse +from loguru import logger from . import nostrclient_ext @@ -93,8 +95,17 @@ async def api_post_event(event: Event): @nostrclient_ext.post("/api/v1/filters") async def api_subscribe(filters: Filters): + nostr_filters = init_filters(filters.__root__) + + return EventSourceResponse( + event_getter(nostr_filters), + ping=20, + media_type="text/event-stream", + ) + +def init_filters(filters: List[Filter]): filter_list = [] - for filter in filters.__root__: + for filter in filters: filter_list.append( NostrFilter( event_ids=filter.ids, @@ -116,15 +127,11 @@ async def api_subscribe(filters: Filters): request.extend(nostr_filters.to_json_array()) message = json.dumps(request) client.relay_manager.publish_message(message) + return nostr_filters - async def event_getter(): - while True: - event = await received_event_queue.get() - if nostr_filters.match(event): - yield event.to_message() - return EventSourceResponse( - event_getter(), - ping=20, - media_type="text/event-stream", - ) +async def event_getter(nostr_filters): + while True: + event = await received_event_queue.get() + if nostr_filters.match(event): + yield event.to_message() \ No newline at end of file