support multiple filters

This commit is contained in:
callebtc 2023-02-15 11:51:18 +01:00
parent 03719603a2
commit 699700c635

View file

@ -87,25 +87,29 @@ async def api_post_event(event: Event):
client.relay_manager.publish_event(nostr_event) client.relay_manager.publish_event(nostr_event)
@nostrclient_ext.post("/api/v1/filter") @nostrclient_ext.post("/api/v1/filters")
async def api_subscribe(filter: Filter): async def api_subscribe(filters: Filters):
nostr_filter = NostrFilter( filter_list = []
event_ids=filter.ids, for filter in filters.__root__:
kinds=filter.kinds, # type: ignore filter_list.append(
authors=filter.authors, NostrFilter(
since=filter.since, event_ids=filter.ids,
until=filter.until, kinds=filter.kinds, # type: ignore
event_refs=filter.e, authors=filter.authors,
pubkey_refs=filter.p, since=filter.since,
limit=filter.limit, until=filter.until,
) event_refs=filter.e,
pubkey_refs=filter.p,
limit=filter.limit,
)
)
filters = NostrFilters([nostr_filter]) nostr_filters = NostrFilters(filter_list)
subscription_id = urlsafe_short_hash() subscription_id = urlsafe_short_hash()
client.relay_manager.add_subscription(subscription_id, filters) client.relay_manager.add_subscription(subscription_id, nostr_filters)
request = [ClientMessageType.REQUEST, subscription_id] request = [ClientMessageType.REQUEST, subscription_id]
request.extend(filters.to_json_array()) request.extend(nostr_filters.to_json_array())
message = json.dumps(request) message = json.dumps(request)
client.relay_manager.publish_message(message) client.relay_manager.publish_message(message)