1414
1515""" This module contains base REST classes for constructing REST servlets. """
1616import logging
17+ from http import HTTPStatus
1718from typing import (
1819 TYPE_CHECKING ,
1920 Iterable ,
@@ -137,11 +138,15 @@ def parse_integer_from_args(
137138 return int (args [name_bytes ][0 ])
138139 except Exception :
139140 message = "Query parameter %r must be an integer" % (name ,)
140- raise SynapseError (400 , message , errcode = Codes .INVALID_PARAM )
141+ raise SynapseError (
142+ HTTPStatus .BAD_REQUEST , message , errcode = Codes .INVALID_PARAM
143+ )
141144 else :
142145 if required :
143146 message = "Missing integer query parameter %r" % (name ,)
144- raise SynapseError (400 , message , errcode = Codes .MISSING_PARAM )
147+ raise SynapseError (
148+ HTTPStatus .BAD_REQUEST , message , errcode = Codes .MISSING_PARAM
149+ )
145150 else :
146151 return default
147152
@@ -246,11 +251,15 @@ def parse_boolean_from_args(
246251 message = (
247252 "Boolean query parameter %r must be one of ['true', 'false']"
248253 ) % (name ,)
249- raise SynapseError (400 , message , errcode = Codes .INVALID_PARAM )
254+ raise SynapseError (
255+ HTTPStatus .BAD_REQUEST , message , errcode = Codes .INVALID_PARAM
256+ )
250257 else :
251258 if required :
252259 message = "Missing boolean query parameter %r" % (name ,)
253- raise SynapseError (400 , message , errcode = Codes .MISSING_PARAM )
260+ raise SynapseError (
261+ HTTPStatus .BAD_REQUEST , message , errcode = Codes .MISSING_PARAM
262+ )
254263 else :
255264 return default
256265
@@ -313,7 +322,7 @@ def parse_bytes_from_args(
313322 return args [name_bytes ][0 ]
314323 elif required :
315324 message = "Missing string query parameter %s" % (name ,)
316- raise SynapseError (400 , message , errcode = Codes .MISSING_PARAM )
325+ raise SynapseError (HTTPStatus . BAD_REQUEST , message , errcode = Codes .MISSING_PARAM )
317326
318327 return default
319328
@@ -407,14 +416,16 @@ def _parse_string_value(
407416 try :
408417 value_str = value .decode (encoding )
409418 except ValueError :
410- raise SynapseError (400 , "Query parameter %r must be %s" % (name , encoding ))
419+ raise SynapseError (
420+ HTTPStatus .BAD_REQUEST , "Query parameter %r must be %s" % (name , encoding )
421+ )
411422
412423 if allowed_values is not None and value_str not in allowed_values :
413424 message = "Query parameter %r must be one of [%s]" % (
414425 name ,
415426 ", " .join (repr (v ) for v in allowed_values ),
416427 )
417- raise SynapseError (400 , message , errcode = Codes .INVALID_PARAM )
428+ raise SynapseError (HTTPStatus . BAD_REQUEST , message , errcode = Codes .INVALID_PARAM )
418429 else :
419430 return value_str
420431
@@ -510,7 +521,9 @@ def parse_strings_from_args(
510521 else :
511522 if required :
512523 message = "Missing string query parameter %r" % (name ,)
513- raise SynapseError (400 , message , errcode = Codes .MISSING_PARAM )
524+ raise SynapseError (
525+ HTTPStatus .BAD_REQUEST , message , errcode = Codes .MISSING_PARAM
526+ )
514527
515528 return default
516529
@@ -638,7 +651,7 @@ def parse_json_value_from_request(
638651 try :
639652 content_bytes = request .content .read () # type: ignore
640653 except Exception :
641- raise SynapseError (400 , "Error reading JSON content." )
654+ raise SynapseError (HTTPStatus . BAD_REQUEST , "Error reading JSON content." )
642655
643656 if not content_bytes and allow_empty_body :
644657 return None
@@ -647,7 +660,9 @@ def parse_json_value_from_request(
647660 content = json_decoder .decode (content_bytes .decode ("utf-8" ))
648661 except Exception as e :
649662 logger .warning ("Unable to parse JSON: %s (%s)" , e , content_bytes )
650- raise SynapseError (400 , "Content not JSON." , errcode = Codes .NOT_JSON )
663+ raise SynapseError (
664+ HTTPStatus .BAD_REQUEST , "Content not JSON." , errcode = Codes .NOT_JSON
665+ )
651666
652667 return content
653668
@@ -673,7 +688,7 @@ def parse_json_object_from_request(
673688
674689 if not isinstance (content , dict ):
675690 message = "Content must be a JSON object."
676- raise SynapseError (400 , message , errcode = Codes .BAD_JSON )
691+ raise SynapseError (HTTPStatus . BAD_REQUEST , message , errcode = Codes .BAD_JSON )
677692
678693 return content
679694
@@ -685,7 +700,9 @@ def assert_params_in_dict(body: JsonDict, required: Iterable[str]) -> None:
685700 absent .append (k )
686701
687702 if len (absent ) > 0 :
688- raise SynapseError (400 , "Missing params: %r" % absent , Codes .MISSING_PARAM )
703+ raise SynapseError (
704+ HTTPStatus .BAD_REQUEST , "Missing params: %r" % absent , Codes .MISSING_PARAM
705+ )
689706
690707
691708class RestServlet :
@@ -758,10 +775,12 @@ async def resolve_room_id(
758775 resolved_room_id = room_id .to_string ()
759776 else :
760777 raise SynapseError (
761- 400 , "%s was not legal room ID or room alias" % (room_identifier ,)
778+ HTTPStatus .BAD_REQUEST ,
779+ "%s was not legal room ID or room alias" % (room_identifier ,),
762780 )
763781 if not resolved_room_id :
764782 raise SynapseError (
765- 400 , "Unknown room ID or room alias %s" % room_identifier
783+ HTTPStatus .BAD_REQUEST ,
784+ "Unknown room ID or room alias %s" % room_identifier ,
766785 )
767786 return resolved_room_id , remote_room_hosts
0 commit comments