summary refs log tree commit diff
path: root/synapse/http/servlet.py
diff options
context:
space:
mode:
authorMark Haines <mark.haines@matrix.org>2015-01-23 18:54:51 +0000
committerMark Haines <mark.haines@matrix.org>2015-01-23 18:55:19 +0000
commit7b814d3f7fc8137426bc97fb80751753eb8eb94b (patch)
tree240f048ab756af54cd2434d1ae33d5c0d25c2381 /synapse/http/servlet.py
parentStop complaining about Synapse Angular SDK 0.6.1 (diff)
downloadsynapse-7b814d3f7fc8137426bc97fb80751753eb8eb94b.tar.xz
Add client v2_alpha resource to synapse server resource tree
Diffstat (limited to 'synapse/http/servlet.py')
-rw-r--r--synapse/http/servlet.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/synapse/http/servlet.py b/synapse/http/servlet.py

index d5ccf2742f..a4eb6c817c 100644 --- a/synapse/http/servlet.py +++ b/synapse/http/servlet.py
@@ -15,6 +15,8 @@ """ This module contains base REST classes for constructing REST servlets. """ +from synapse.api.errors import SynapseError + import logging @@ -54,3 +56,58 @@ class RestServlet(object): http_server.register_path(method, pattern, method_handler) else: raise NotImplementedError("RestServlet must register something.") + + @staticmethod + def parse_integer(request, name, default=None, required=False): + if name in request.args: + try: + return int(request.args[name][0]) + except: + message = "Query parameter %r must be an integer" % (name,) + raise SynapseError(400, message) + else: + if required: + message = "Missing integer query parameter %r" % (name,) + raise SynapseError(400, message) + else: + return default + + @staticmethod + def parse_boolean(request, name, default=None, required=False): + if name in request.args: + try: + return { + "true": True, + "false": False, + }[request.args[name][0]] + except: + message = ( + "Boolean query parameter %r must be one of" + " ['true', 'false']" + ) % (name,) + raise SynapseError(400, message) + else: + if required: + message = "Missing boolean query parameter %r" % (name,) + raise SynapseError(400, message) + else: + return default + + @staticmethod + def parse_string(request, name, default=None, required=False, + allowed_values=None, param_type="string"): + if name in request.args: + value = request.args[name][0] + if allowed_values is not None and value not in allowed_values: + message = "Query parameter %r must be one of [%s]" % ( + name, ", ".join(repr(v) for v in allowed_values) + ) + raise SynapseError(message) + else: + return value + else: + if required: + message = "Missing %s query parameter %r" % (param_type, name) + raise SynapseError(400, message) + else: + return default