mirror of
https://mau.dev/maunium/synapse.git
synced 2025-01-07 14:53:54 +01:00
parent
6ec9d8ba0a
commit
d6a7797dd1
4 changed files with 50 additions and 3 deletions
1
changelog.d/4046.bugfix
Normal file
1
changelog.d/4046.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix issue where Python 3 users couldn't paginate /publicRooms
|
|
@ -16,7 +16,7 @@
|
||||||
import logging
|
import logging
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
from six import iteritems
|
from six import PY3, iteritems
|
||||||
from six.moves import range
|
from six.moves import range
|
||||||
|
|
||||||
import msgpack
|
import msgpack
|
||||||
|
@ -444,9 +444,16 @@ class RoomListNextBatch(namedtuple("RoomListNextBatch", (
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_token(cls, token):
|
def from_token(cls, token):
|
||||||
|
if PY3:
|
||||||
|
# The argument raw=False is only available on new versions of
|
||||||
|
# msgpack, and only really needed on Python 3. Gate it behind
|
||||||
|
# a PY3 check to avoid causing issues on Debian-packaged versions.
|
||||||
|
decoded = msgpack.loads(decode_base64(token), raw=False)
|
||||||
|
else:
|
||||||
|
decoded = msgpack.loads(decode_base64(token))
|
||||||
return RoomListNextBatch(**{
|
return RoomListNextBatch(**{
|
||||||
cls.REVERSE_KEY_DICT[key]: val
|
cls.REVERSE_KEY_DICT[key]: val
|
||||||
for key, val in msgpack.loads(decode_base64(token)).items()
|
for key, val in decoded.items()
|
||||||
})
|
})
|
||||||
|
|
||||||
def to_token(self):
|
def to_token(self):
|
||||||
|
|
|
@ -55,7 +55,7 @@ REQUIREMENTS = {
|
||||||
"sortedcontainers>=1.4.4": ["sortedcontainers"],
|
"sortedcontainers>=1.4.4": ["sortedcontainers"],
|
||||||
"pysaml2>=3.0.0": ["saml2"],
|
"pysaml2>=3.0.0": ["saml2"],
|
||||||
"pymacaroons-pynacl>=0.9.3": ["pymacaroons"],
|
"pymacaroons-pynacl>=0.9.3": ["pymacaroons"],
|
||||||
"msgpack-python>=0.3.0": ["msgpack"],
|
"msgpack-python>=0.4.2": ["msgpack"],
|
||||||
"phonenumbers>=8.2.0": ["phonenumbers"],
|
"phonenumbers>=8.2.0": ["phonenumbers"],
|
||||||
"six>=1.10": ["six"],
|
"six>=1.10": ["six"],
|
||||||
|
|
||||||
|
|
39
tests/handlers/test_roomlist.py
Normal file
39
tests/handlers/test_roomlist.py
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright 2018 New Vector Ltd
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
from synapse.handlers.room_list import RoomListNextBatch
|
||||||
|
|
||||||
|
import tests.unittest
|
||||||
|
import tests.utils
|
||||||
|
|
||||||
|
|
||||||
|
class RoomListTestCase(tests.unittest.TestCase):
|
||||||
|
""" Tests RoomList's RoomListNextBatch. """
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_check_read_batch_tokens(self):
|
||||||
|
batch_token = RoomListNextBatch(
|
||||||
|
stream_ordering="abcdef",
|
||||||
|
public_room_stream_id="123",
|
||||||
|
current_limit=20,
|
||||||
|
direction_is_forward=True,
|
||||||
|
).to_token()
|
||||||
|
next_batch = RoomListNextBatch.from_token(batch_token)
|
||||||
|
self.assertEquals(next_batch.stream_ordering, "abcdef")
|
||||||
|
self.assertEquals(next_batch.public_room_stream_id, "123")
|
||||||
|
self.assertEquals(next_batch.current_limit, 20)
|
||||||
|
self.assertEquals(next_batch.direction_is_forward, True)
|
Loading…
Reference in a new issue