bazarr/libs/signalr/transports/_sse_transport.py

36 lines
1.1 KiB
Python
Raw Normal View History

import json
import sseclient
from ._transport import Transport
from requests.exceptions import ConnectionError
class ServerSentEventsTransport(Transport):
def __init__(self, session, connection):
Transport.__init__(self, session, connection)
self.__response = None
def _get_name(self):
return 'serverSentEvents'
def start(self):
self.__response = sseclient.SSEClient(self._get_url('connect'), session=self._session)
self._session.get(self._get_url('start'))
def _receive():
try:
for notification in self.__response:
if notification.data != 'initialized':
self._handle_notification(notification.data)
except ConnectionError:
raise ConnectionError
return _receive
def send(self, data):
response = self._session.post(self._get_url('send'), data={'data': json.dumps(data)})
parsed = json.loads(response.content)
self._connection.received.fire(**parsed)
def close(self):
self._session.get(self._get_url('abort'))