summary refs log tree commit diff
path: root/synapse/api/errors.py
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2020-01-22 13:48:11 +0000
committerBrendan Abolivier <babolivier@matrix.org>2020-01-22 13:48:11 +0000
commitc660962d4ddc2b6bfef7cd405e48a005786970da (patch)
tree5b72fc711ad15e7f31363e43729cd4acd852afd3 /synapse/api/errors.py
parentMerge branch 'rav/storage_provider_debug' into matrix-org-hotfixes (diff)
parentAdmin API to list, filter and sort rooms (#6720) (diff)
downloadsynapse-c660962d4ddc2b6bfef7cd405e48a005786970da.tar.xz
Merge branch 'develop' of github.com:matrix-org/synapse into matrix-org-hotfixes
Diffstat (limited to 'synapse/api/errors.py')
-rw-r--r--synapse/api/errors.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/synapse/api/errors.py b/synapse/api/errors.py

index 9e9844b47c..1c9456e583 100644 --- a/synapse/api/errors.py +++ b/synapse/api/errors.py
@@ -17,13 +17,15 @@ """Contains exceptions and error codes.""" import logging -from typing import Dict +from typing import Dict, List from six import iteritems from six.moves import http_client from canonicaljson import json +from twisted.web import http + logger = logging.getLogger(__name__) @@ -80,6 +82,29 @@ class CodeMessageException(RuntimeError): self.msg = msg +class RedirectException(CodeMessageException): + """A pseudo-error indicating that we want to redirect the client to a different + location + + Attributes: + cookies: a list of set-cookies values to add to the response. For example: + b"sessionId=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT" + """ + + def __init__(self, location: bytes, http_code: int = http.FOUND): + """ + + Args: + location: the URI to redirect to + http_code: the HTTP response code + """ + msg = "Redirect to %s" % (location.decode("utf-8"),) + super().__init__(code=http_code, msg=msg) + self.location = location + + self.cookies = [] # type: List[bytes] + + class SynapseError(CodeMessageException): """A base exception type for matrix errors which have an errcode and error message (as well as an HTTP status code).