@@ -58,9 +58,18 @@ def _check_status(info: ResponseInfo, content: str) -> None:
5858
5959def _extract_info (response : ResponseType ) -> ResponseInfo :
6060 """Extract status code, URL, and method from a response."""
61+ if response .status_code is None :
62+ msg = "Response is missing status code."
63+ raise ValueError (msg )
64+ if response .request is None :
65+ msg = "Response is missing request information."
66+ raise ValueError (msg )
67+ if response .url is None :
68+ msg = "Response is missing URL information."
69+ raise ValueError (msg )
6170 return ResponseInfo (
6271 status_code = response .status_code ,
63- url = str ( response .url ) ,
72+ url = response .url ,
6473 method = response .request .method ,
6574 )
6675
@@ -70,7 +79,7 @@ def _check_sync_status(response: ResponseType) -> None:
7079 info = _extract_info (response )
7180 if info .status_code in (HTTPStatus .OK , HTTPStatus .CREATED ):
7281 return
73- _check_status (info , content = response . text )
82+ _check_status (info , content = _parse_text ( response ) )
7483
7584
7685# --- Individual parse functions ---
@@ -87,6 +96,9 @@ def _parse_json(response: ResponseType) -> Any:
8796
8897def _parse_text (response : ResponseType ) -> str :
8998 """Return the plaintext content of a sync response."""
99+ if response .text is None :
100+ msg = "Response is missing text content."
101+ raise MalformedDataError (msg )
90102 return response .text
91103
92104
@@ -104,9 +116,12 @@ def _parse_text(response: ResponseType) -> str:
104116
105117def _parse_content (response : ResponseType ) -> Any :
106118 """Look up and call the appropriate parser by content-type."""
107- mimetype = response .headers .get ("content-type" , "text/plain" ).split (";" )[0 ]
108- parser = _PARSERS .get (mimetype )
109- if parser is None :
119+ content_type = response .headers .get ("content-type" , "text/plain" )
120+ if isinstance (content_type , bytes ):
121+ content_type = content_type .decode ("utf-8" )
122+ mimetype = str (content_type ).split (";" )[0 ].strip ().lower ()
123+
124+ if (parser := _PARSERS .get (mimetype )) is None :
110125 msg = f"No response processor found for mimetype { mimetype !r} ."
111126 raise ProcessorNotFoundError (msg )
112127 return parser (response )
0 commit comments