def _parse_content_type(self, raw: str) -> None: self._stored_content_type = raw if raw is None: # default value according to RFC 2616 self._content_type = "application/octet-stream" self._content_dict = {} else: msg = HeaderParser().parsestr("Content-Type: " + raw) self._content_type = msg.get_content_type() params = msg.get_params() self._content_dict = dict( params[1:]) # First element is content type again
def _parse_content_disposition(self, headers): """ Parse the content-disposition header and return the name and filename parameters. Content-disposition is deleted from the headers after retrieving its value. Filename is set to None, if it is not found. :param headers: headers for part :return: name string and filename string or None """ name = 'Content-Disposition' # get content-disposition header content_disposition = name + ': ' + headers.pop(name.encode()).decode() # parse string for params message = HeaderParser().parsestr(content_disposition) params = dict(message.get_params(header=name)) # get name and filename name = params['name'] filename = params.get('filename') return name, filename