def __init__(self, room_version: RoomVersion, v1_api: bool): self._response = SendJoinResponse([], [], {}) self._room_version = room_version # The V1 API has the shape of `[200, {...}]`, which we handle by # prefixing with `item.*`. prefix = "item." if v1_api else "" self._coro_state = ijson.items_coro( _event_list_parser(room_version, self._response.state), prefix + "state.item", use_float=True, ) self._coro_auth = ijson.items_coro( _event_list_parser(room_version, self._response.auth_events), prefix + "auth_chain.item", use_float=True, ) # TODO Remove the unstable prefix when servers have updated. # # By re-using the same event dictionary this will cause the parsing of # org.matrix.msc3083.v2.event and event to stomp over each other. # Generally this should be fine. self._coro_unstable_event = ijson.kvitems_coro( _event_parser(self._response.event_dict), prefix + "org.matrix.msc3083.v2.event", use_float=True, ) self._coro_event = ijson.kvitems_coro( _event_parser(self._response.event_dict), prefix + "event", use_float=True, )
def __init__(self, room_version: RoomVersion, v1_api: bool): self._response = SendJoinResponse([], [], event_dict={}) self._room_version = room_version self._coros: List[Generator[None, bytes, None]] = [] # The V1 API has the shape of `[200, {...}]`, which we handle by # prefixing with `item.*`. prefix = "item." if v1_api else "" self._coros = [ ijson.items_coro( _event_list_parser(room_version, self._response.state), prefix + "state.item", use_float=True, ), ijson.items_coro( _event_list_parser(room_version, self._response.auth_events), prefix + "auth_chain.item", use_float=True, ), ijson.kvitems_coro( _event_parser(self._response.event_dict), prefix + "event", use_float=True, ), ] if not v1_api: self._coros.append( ijson.items_coro( _partial_state_parser(self._response), "org.matrix.msc3706.partial_state", use_float="True", ) ) self._coros.append( ijson.items_coro( _servers_in_room_parser(self._response), "org.matrix.msc3706.servers_in_room", use_float="True", ) )
def __init__(self, room_version: RoomVersion, v1_api: bool): self._response = SendJoinResponse([], [], {}) self._room_version = room_version # The V1 API has the shape of `[200, {...}]`, which we handle by # prefixing with `item.*`. prefix = "item." if v1_api else "" self._coro_state = ijson.items_coro( _event_list_parser(room_version, self._response.state), prefix + "state.item", ) self._coro_auth = ijson.items_coro( _event_list_parser(room_version, self._response.auth_events), prefix + "auth_chain.item", ) self._coro_event = ijson.kvitems_coro( _event_parser(self._response.event_dict), prefix + "org.matrix.msc3083.v2.event", )