feat: add delete post tests
This commit is contained in:
parent
b0be06580a
commit
01764c155e
4 changed files with 111 additions and 11 deletions
|
|
@ -1,11 +1,10 @@
|
|||
import asyncio
|
||||
import json
|
||||
from typing import Any, Callable, List, Union
|
||||
from typing import Any, Callable, List
|
||||
|
||||
from fastapi import WebSocket
|
||||
from loguru import logger
|
||||
|
||||
from .crud import create_event, get_events
|
||||
from .crud import create_event, delete_events, get_events
|
||||
from .models import NostrEvent, NostrEventType, NostrFilter
|
||||
|
||||
|
||||
|
|
@ -23,8 +22,7 @@ class NostrClientManager:
|
|||
async def broadcast_event(self, source: "NostrClientConnection", event: NostrEvent):
|
||||
for client in self.clients:
|
||||
if client != source:
|
||||
sent = await client.notify_event(event)
|
||||
print("### sent", sent, event.id)
|
||||
await client.notify_event(event)
|
||||
|
||||
|
||||
class NostrClientConnection:
|
||||
|
|
@ -38,13 +36,12 @@ class NostrClientConnection:
|
|||
await self.websocket.accept()
|
||||
while True:
|
||||
json_data = await self.websocket.receive_text()
|
||||
print('### received', json_data)
|
||||
print('### received: ', json_data)
|
||||
try:
|
||||
data = json.loads(json_data)
|
||||
|
||||
resp = await self.__handle_message(data)
|
||||
for r in resp:
|
||||
print('### sent query', json.dumps(r))
|
||||
await self.websocket.send_text(json.dumps(r))
|
||||
except Exception as e:
|
||||
logger.warning(e)
|
||||
|
|
@ -53,7 +50,6 @@ class NostrClientConnection:
|
|||
for filter in self.filters:
|
||||
if filter.matches(event):
|
||||
resp = event.serialize_response(filter.subscription_id)
|
||||
print('### sent notify', json.dumps(resp))
|
||||
await self.websocket.send_text(json.dumps(resp))
|
||||
return True
|
||||
return False
|
||||
|
|
@ -76,18 +72,28 @@ class NostrClientConnection:
|
|||
|
||||
return []
|
||||
|
||||
async def __handle_event(self, e: "NostrEvent"):
|
||||
async def __handle_event(self, e: NostrEvent):
|
||||
resp_nip20: List[Any] = ["ok", e.id]
|
||||
try:
|
||||
e.check_signature()
|
||||
await create_event("111", e)
|
||||
await self.broadcast_event(self, e)
|
||||
if e.is_delete_event():
|
||||
await self.__delete_event(e)
|
||||
resp_nip20 += [True, ""]
|
||||
except Exception as ex:
|
||||
resp_nip20 += [False, f"error: failed to create event"]
|
||||
|
||||
await self.websocket.send_text(json.dumps(resp_nip20))
|
||||
|
||||
async def __delete_event(self, event: NostrEvent):
|
||||
# NIP 09
|
||||
filter = NostrFilter(authors=[event.pubkey])
|
||||
filter.ids = [t[1] for t in event.tags if t[0] == "e"]
|
||||
events_to_delete = await get_events("111", filter, False)
|
||||
ids = [e.id for e in events_to_delete]
|
||||
await delete_events("111", ids)
|
||||
|
||||
async def __handle_request(self, subscription_id: str, filter: NostrFilter) -> List:
|
||||
filter.subscription_id = subscription_id
|
||||
self.remove_filter(subscription_id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue