MCPcopy
hub / github.com/encode/starlette / on_headers_finished

Method on_headers_finished

starlette/formparsers.py:219–242  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

217 self._current_partial_header_value = b""
218
219 def on_headers_finished(self) -> None:
220 disposition, options = parse_options_header(self._current_part.content_disposition)
221 try:
222 self._current_part.field_name = _user_safe_decode(options[b"name"], self._charset)
223 except KeyError:
224 raise MultiPartException('The Content-Disposition header field "name" must be provided.')
225 if b"filename" in options:
226 self._current_files += 1
227 if self._current_files > self.max_files:
228 raise MultiPartException(f"Too many files. Maximum number of files is {self.max_files}.")
229 filename = _user_safe_decode(options[b"filename"], self._charset)
230 tempfile = SpooledTemporaryFile(max_size=self.spool_max_size)
231 self._files_to_close_on_error.append(tempfile)
232 self._current_part.file = UploadFile(
233 file=tempfile, # type: ignore[arg-type]
234 size=0,
235 filename=filename,
236 headers=Headers(raw=self._current_part.item_headers),
237 )
238 else:
239 self._current_fields += 1
240 if self._current_fields > self.max_fields:
241 raise MultiPartException(f"Too many fields. Maximum number of fields is {self.max_fields}.")
242 self._current_part.file = None
243
244 def on_end(self) -> None:
245 pass

Callers

nothing calls this directly

Calls 5

UploadFileClass · 0.90
HeadersClass · 0.90
_user_safe_decodeFunction · 0.85
MultiPartExceptionClass · 0.85
appendMethod · 0.45

Tested by

no test coverage detected