mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-18 07:52:56 +01:00
Set status message for ratelimit error responses
This commit is contained in:
parent
30ad0c5674
commit
112c7ea315
3 changed files with 12 additions and 6 deletions
|
@ -39,6 +39,7 @@ class CodeMessageException(Exception):
|
||||||
super(CodeMessageException, self).__init__("%d: %s" % (code, msg))
|
super(CodeMessageException, self).__init__("%d: %s" % (code, msg))
|
||||||
self.code = code
|
self.code = code
|
||||||
self.msg = msg
|
self.msg = msg
|
||||||
|
self.response_code_message = None
|
||||||
|
|
||||||
def error_dict(self):
|
def error_dict(self):
|
||||||
return cs_error(self.msg)
|
return cs_error(self.msg)
|
||||||
|
@ -107,6 +108,7 @@ class LimitExceededError(SynapseError):
|
||||||
errcode=Codes.LIMIT_EXCEEDED):
|
errcode=Codes.LIMIT_EXCEEDED):
|
||||||
super(LimitExceededError, self).__init__(code, msg, errcode)
|
super(LimitExceededError, self).__init__(code, msg, errcode)
|
||||||
self.retry_after_ms = retry_after_ms
|
self.retry_after_ms = retry_after_ms
|
||||||
|
self.response_code_message = "Too Many Requests"
|
||||||
|
|
||||||
def error_dict(self):
|
def error_dict(self):
|
||||||
return cs_error(
|
return cs_error(
|
||||||
|
|
|
@ -39,7 +39,7 @@ class BaseHandler(object):
|
||||||
)
|
)
|
||||||
if not allowed:
|
if not allowed:
|
||||||
raise LimitExceededError(
|
raise LimitExceededError(
|
||||||
retry_after_ms=1000*(time_allowed - time_now),
|
retry_after_ms=int(1000*(time_allowed - time_now)),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,8 @@ class JsonResource(HttpServer, resource.Resource):
|
||||||
self._send_response(
|
self._send_response(
|
||||||
request,
|
request,
|
||||||
e.code,
|
e.code,
|
||||||
cs_exception(e)
|
cs_exception(e),
|
||||||
|
response_code_message=e.response_code_message
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception(e)
|
logger.exception(e)
|
||||||
|
@ -150,7 +151,8 @@ class JsonResource(HttpServer, resource.Resource):
|
||||||
{"error": "Internal server error"}
|
{"error": "Internal server error"}
|
||||||
)
|
)
|
||||||
|
|
||||||
def _send_response(self, request, code, response_json_object):
|
def _send_response(self, request, code, response_json_object,
|
||||||
|
response_code_message=None):
|
||||||
# could alternatively use request.notifyFinish() and flip a flag when
|
# could alternatively use request.notifyFinish() and flip a flag when
|
||||||
# the Deferred fires, but since the flag is RIGHT THERE it seems like
|
# the Deferred fires, but since the flag is RIGHT THERE it seems like
|
||||||
# a waste.
|
# a waste.
|
||||||
|
@ -166,7 +168,8 @@ class JsonResource(HttpServer, resource.Resource):
|
||||||
json_bytes = encode_pretty_printed_json(response_json_object)
|
json_bytes = encode_pretty_printed_json(response_json_object)
|
||||||
|
|
||||||
# TODO: Only enable CORS for the requests that need it.
|
# TODO: Only enable CORS for the requests that need it.
|
||||||
respond_with_json_bytes(request, code, json_bytes, send_cors=True)
|
respond_with_json_bytes(request, code, json_bytes, send_cors=True,
|
||||||
|
response_code_message=response_code_message)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _request_user_agent_is_curl(request):
|
def _request_user_agent_is_curl(request):
|
||||||
|
@ -350,7 +353,8 @@ class ContentRepoResource(resource.Resource):
|
||||||
send_cors=True)
|
send_cors=True)
|
||||||
|
|
||||||
|
|
||||||
def respond_with_json_bytes(request, code, json_bytes, send_cors=False):
|
def respond_with_json_bytes(request, code, json_bytes, send_cors=False,
|
||||||
|
response_code_message=None):
|
||||||
"""Sends encoded JSON in response to the given request.
|
"""Sends encoded JSON in response to the given request.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -362,7 +366,7 @@ def respond_with_json_bytes(request, code, json_bytes, send_cors=False):
|
||||||
Returns:
|
Returns:
|
||||||
twisted.web.server.NOT_DONE_YET"""
|
twisted.web.server.NOT_DONE_YET"""
|
||||||
|
|
||||||
request.setResponseCode(code)
|
request.setResponseCode(code, message=response_code_message)
|
||||||
request.setHeader(b"Content-Type", b"application/json")
|
request.setHeader(b"Content-Type", b"application/json")
|
||||||
|
|
||||||
if send_cors:
|
if send_cors:
|
||||||
|
|
Loading…
Reference in a new issue