Skip to content

Commit b619130

Browse files
authored
feat: add custom event endpoint (#103)
1 parent 1343f43 commit b619130

File tree

5 files changed

+27
-0
lines changed

5 files changed

+27
-0
lines changed

stream_chat/async_chat/client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,9 @@ async def get_export_channel_status(self, task_id: str) -> StreamResponse:
591591
async def get_task(self, task_id: str) -> StreamResponse:
592592
return await self.get(f"tasks/{task_id}")
593593

594+
async def send_user_custom_event(self, user_id: str, event: Dict) -> StreamResponse:
595+
return await self.post(f"users/{user_id}/event", data={"event": event})
596+
594597
async def close(self) -> None:
595598
await self.session.close()
596599

stream_chat/base/client.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -857,6 +857,15 @@ def get_task(
857857
"""
858858
pass
859859

860+
@abc.abstractmethod
861+
def send_user_custom_event(
862+
self, user_id: str, event: Dict
863+
) -> Union[StreamResponse, Awaitable[StreamResponse]]:
864+
"""
865+
Allows you to send custom events to a connected user.
866+
"""
867+
pass
868+
860869
#####################
861870
# Private methods #
862871
#####################

stream_chat/client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,3 +560,6 @@ def get_export_channel_status(self, task_id: str) -> StreamResponse:
560560

561561
def get_task(self, task_id: str) -> StreamResponse:
562562
return self.get(f"tasks/{task_id}")
563+
564+
def send_user_custom_event(self, user_id: str, event: Dict) -> StreamResponse:
565+
return self.post(f"users/{user_id}/event", data={"event": event})

stream_chat/tests/async_chat/test_client.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,13 @@ async def test_delete_channels(self, client: StreamChatAsync, channel: Channel):
701701

702702
pytest.fail("task did not succeed")
703703

704+
async def test_send_user_custom_event(
705+
self, client: StreamChatAsync, random_user: Dict
706+
):
707+
await client.send_user_custom_event(
708+
random_user["id"], {"type": "friendship_request", "text": "testtext"}
709+
)
710+
704711
@pytest.mark.asyncio
705712
async def test_stream_response(self, client: StreamChatAsync):
706713
resp = await client.get_app_settings()

stream_chat/tests/test_client.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,11 @@ def test_delete_channels(self, client: StreamChat, channel: Channel):
657657

658658
pytest.fail("task did not succeed")
659659

660+
def test_send_user_custom_event(self, client: StreamChat, random_user: Dict):
661+
client.send_user_custom_event(
662+
random_user["id"], {"type": "friendship_request", "text": "testtext"}
663+
)
664+
660665
def test_stream_response_contains_metadata(self, client: StreamChat):
661666
resp = client.get_app_settings()
662667

0 commit comments

Comments
 (0)