2022-12-06 08:44:29 +00:00
|
|
|
from sse_starlette.sse import EventSourceResponse
|
2022-12-13 00:56:58 +00:00
|
|
|
from starlette.requests import Request
|
|
|
|
from graphql.type import GraphQLResolveInfo
|
2022-12-12 08:03:48 +00:00
|
|
|
from resolvers.inbox.messages import message_generator
|
2023-01-10 08:15:28 +00:00
|
|
|
# from base.exceptions import Unauthorized
|
2022-12-06 08:44:29 +00:00
|
|
|
|
2022-12-13 00:44:35 +00:00
|
|
|
# https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md
|
|
|
|
|
2022-12-06 08:44:29 +00:00
|
|
|
|
2022-12-13 00:07:47 +00:00
|
|
|
async def sse_messages(request: Request):
|
2022-12-13 00:44:35 +00:00
|
|
|
print(f'[SSE] request\n{request}\n')
|
|
|
|
info = GraphQLResolveInfo()
|
|
|
|
info.context['request'] = request.scope
|
|
|
|
user_id = request.scope['user'].user_id
|
|
|
|
if user_id:
|
|
|
|
event_generator = await message_generator(None, info)
|
2022-12-12 08:03:48 +00:00
|
|
|
return EventSourceResponse(event_generator)
|
2022-12-06 11:58:52 +00:00
|
|
|
else:
|
2023-01-10 08:15:28 +00:00
|
|
|
# raise Unauthorized("Please login")
|
|
|
|
return {
|
|
|
|
"error": "Please login first"
|
|
|
|
}
|