diff options
author | Amber Brown <hawkowl@atleastfornow.net> | 2018-07-14 09:09:19 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-14 09:09:19 +1000 |
commit | 8532953c048ba8dc258d57d18e56e2243c41b085 (patch) | |
tree | 1de20a1972e313b196b2c5abcacb5d40413a8b36 /synapse/streams/config.py | |
parent | Make auth & transactions more testable (#3499) (diff) | |
parent | fix sytests (diff) | |
download | synapse-8532953c048ba8dc258d57d18e56e2243c41b085.tar.xz |
Merge pull request #3534 from krombel/use_parse_and_asserts_from_servlet
Use parse and asserts from http.servlet
Diffstat (limited to 'synapse/streams/config.py')
-rw-r--r-- | synapse/streams/config.py | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/synapse/streams/config.py b/synapse/streams/config.py index 46ccbbda7d..22b0b830f7 100644 --- a/synapse/streams/config.py +++ b/synapse/streams/config.py @@ -16,6 +16,7 @@ import logging from synapse.api.errors import SynapseError +from synapse.http.servlet import parse_integer, parse_string from synapse.types import StreamToken logger = logging.getLogger(__name__) @@ -56,23 +57,10 @@ class PaginationConfig(object): @classmethod def from_request(cls, request, raise_invalid_params=True, default_limit=None): - def get_param(name, default=None): - lst = request.args.get(name, []) - if len(lst) > 1: - raise SynapseError( - 400, "%s must be specified only once" % (name,) - ) - elif len(lst) == 1: - return lst[0] - else: - return default - - direction = get_param("dir", 'f') - if direction not in ['f', 'b']: - raise SynapseError(400, "'dir' parameter is invalid.") - - from_tok = get_param("from") - to_tok = get_param("to") + direction = parse_string(request, "dir", default='f', allowed_values=['f', 'b']) + + from_tok = parse_string(request, "from") + to_tok = parse_string(request, "to") try: if from_tok == "END": @@ -88,12 +76,7 @@ class PaginationConfig(object): except Exception: raise SynapseError(400, "'to' paramater is invalid") - limit = get_param("limit", None) - if limit is not None and not limit.isdigit(): - raise SynapseError(400, "'limit' parameter must be an integer.") - - if limit is None: - limit = default_limit + limit = parse_integer(request, "limit", default=default_limit) try: return PaginationConfig(from_tok, to_tok, direction, limit) |