def handle_filter_message(message, session=None): """A client updating its streamer filter.""" if "filter" not in message.payload: message.reply( { "type": "error", "error": { "type": "invalid_data", "description": '"filter" is missing' }, }, ok=False, ) return filter_ = message.payload["filter"] try: jsonschema.validate(filter_, filter.SCHEMA) except jsonschema.ValidationError: message.reply( { "type": "error", "error": { "type": "invalid_data", "description": "failed to parse filter", }, }, ok=False, ) return if session is not None: # Add backend expands for clauses _expand_clauses(session, filter_) message.socket.filter = filter.FilterHandler(filter_)
def handle_filter_message(message, session=None): """A client updating its streamer filter.""" if 'filter' not in message.payload: message.reply( { 'type': 'error', 'error': { 'type': 'invalid_data', 'description': '"filter" is missing' } }, ok=False) return filter_ = message.payload['filter'] try: jsonschema.validate(filter_, filter.SCHEMA) except jsonschema.ValidationError: message.reply( { 'type': 'error', 'error': { 'type': 'invalid_data', 'description': 'failed to parse filter' } }, ok=False) return if session is not None: # Add backend expands for clauses _expand_clauses(session, filter_) message.socket.filter = filter.FilterHandler(filter_)
def handle_message(message): socket = message.socket socket.request.feature.clear() data = json.loads(message.payload) try: msg_type = data.get('messageType', 'filter') if msg_type == 'filter': payload = data['filter'] # Let's try to validate the schema jsonschema.validate(payload, filter.SCHEMA) # Add backend expands for clauses _expand_clauses(socket.request, payload) socket.filter = filter.FilterHandler(payload) elif msg_type == 'client_id': socket.client_id = data.get('value') except: # TODO: clean this up, catch specific errors, narrow the scope log.exception("Parsing filter: %s", data) socket.close() raise
def handle_message(message, session=None): """ Handle an incoming message from a client websocket. Receives a :py:class:`~h.streamer.websocket.Message` instance, which holds references to the :py:class:`~h.streamer.websocket.WebSocket` instance associated with the client connection, as well as the message payload. It updates state on the :py:class:`~h.streamer.websocket.WebSocket` instance in response to the message content. It may also passed a database session which *must* be used for any communication with the database. """ socket = message.socket data = json.loads(message.payload) try: msg_type = data.get('messageType', 'filter') if msg_type == 'filter': payload = data['filter'] # Let's try to validate the schema jsonschema.validate(payload, filter.SCHEMA) if session is not None: # Add backend expands for clauses _expand_clauses(session, payload) socket.filter = filter.FilterHandler(payload) elif msg_type == 'client_id': socket.client_id = data.get('value') except: # TODO: clean this up, catch specific errors, narrow the scope log.exception("Parsing filter: %s", data) socket.close() raise