def test_semicolon_inside_quotes(self):
     (header, subheaders) = parse_header(
         'Content-Type: "text/html;"; charset=";UTF-8"; boundary=\';"hell";o;\''
     )
     self.assertEqual('text/html;', header)
     self.assertEqual({
         'charset': ';UTF-8',
         'boundary': ';"hell";o;'
     }, subheaders)
Example #2
0
 def test_strip_whitespaces(self):
     (header, subheaders) = parse_header(' Content-Type :text/html  '
                                         ';charset =  "UTF-8";crossorigin;'
                                         '   boundary  = something  ')
     self.assertEqual('text/html', header)
     self.assertEqual({
         'charset': 'UTF-8',
         'crossorigin': '',
         'boundary': 'something'}, subheaders)
 def test_header_with_multiple_subheaders(self):
     (header, subheaders) = parse_header(
         'Content-Type: multipart/form-data; boundary=something; charset=UTF-8'
     )
     self.assertEqual('multipart/form-data', header)
     self.assertEqual({
         'charset': 'UTF-8',
         'boundary': 'something'
     }, subheaders)
 def test_strip_whitespaces(self):
     (header, subheaders) = parse_header(' Content-Type :text/html  '
                                         ';charset =  "UTF-8";crossorigin;'
                                         '   boundary  = something  ')
     self.assertEqual('text/html', header)
     self.assertEqual(
         {
             'charset': 'UTF-8',
             'crossorigin': '',
             'boundary': 'something'
         }, subheaders)
Example #5
0
    def __init__(self, header, files_path):
        header_str = header.decode('utf-8')
        if '\r\n' in header_str:
            header_str = header_str[:header_str.index('\r\n')]

        (value, sub_headers) = parse_header(header_str)

        self.name = sub_headers['name']

        self.filename = sub_headers.get('filename')

        if self.filename:
            self.path = os.path.join(files_path, self.filename)
            self.path = file_utils.create_unique_filename(self.path)
            # touch file
            open(self.path, 'w').close()
        else:
            self.value = ''
    def __init__(self, header, files_path):
        header_str = header.decode('utf-8')
        if '\r\n' in header_str:
            header_str = header_str[:header_str.index('\r\n')]

        (value, sub_headers) = parse_header(header_str)

        self.name = sub_headers['name']

        self.filename = sub_headers.get('filename')

        if self.filename:
            self.path = os.path.join(files_path, self.filename)
            self.path = file_utils.create_unique_filename(self.path)
            # touch file
            open(self.path, 'w').close()
        else:
            self.value = ''
    def __init__(self, headers, output_files_path) -> None:
        (content_type, content_type_dict) = parse_header(headers.get('Content-Type'))

        content_length = headers.get('Content-Length')
        self.max_length = int(content_length) if content_length else 0

        if content_type != 'multipart/form-data':
            raise Exception('Unsupported content type: ' + content_type)

        if 'boundary' not in content_type_dict:
            raise Exception('Failed to find boundary in header ' + content_type)

        self._boundary = b'--' + content_type_dict['boundary'].encode('utf-8')
        self._fields_separator = b'\r\n' + self._boundary
        self._buffer = b''
        self._current_part = None
        self._output_files_path = output_files_path
        self._read_bytes = 0
        self.values = {}
        self.files = {}
Example #8
0
    def __init__(self, headers, output_files_path) -> None:
        (content_type,
         content_type_dict) = parse_header(headers.get('Content-Type'))

        content_length = headers.get('Content-Length')
        self.max_length = int(content_length) if content_length else 0

        if content_type != 'multipart/form-data':
            raise Exception('Unsupported content type: ' + content_type)

        if 'boundary' not in content_type_dict:
            raise Exception('Failed to find boundary in header ' +
                            content_type)

        self._boundary = b'--' + content_type_dict['boundary'].encode('utf-8')
        self._fields_separator = b'\r\n' + self._boundary
        self._buffer = b''
        self._current_part = None
        self._output_files_path = output_files_path
        self._read_bytes = 0
        self.values = {}
        self.files = {}
Example #9
0
 def test_simple_header(self):
     (header, subheaders) = parse_header('Content-Type: text/html')
     self.assertEqual('text/html', header)
     self.assertEqual({}, subheaders)
Example #10
0
 def test_semicolon_inside_quotes(self):
     (header, subheaders) = parse_header('Content-Type: "text/html;"; charset=";UTF-8"; boundary=\';"hell";o;\'')
     self.assertEqual('text/html;', header)
     self.assertEqual({'charset': ';UTF-8', 'boundary': ';"hell";o;'}, subheaders)
Example #11
0
 def test_subheader_with_quotes(self):
     (header, subheaders) = parse_header('Content-Type: text/html; charset="UTF-8"')
     self.assertEqual('text/html', header)
     self.assertEqual({'charset': 'UTF-8'}, subheaders)
Example #12
0
 def test_header_with_subheader_without_val(self):
     (header, subheaders) = parse_header('Content-Type: multipart/form-data; crossorigin; charset=UTF-8')
     self.assertEqual('multipart/form-data', header)
     self.assertEqual({'charset': 'UTF-8', 'crossorigin': ''}, subheaders)
Example #13
0
 def test_header_with_multiple_subheaders(self):
     (header, subheaders) = parse_header('Content-Type: multipart/form-data; boundary=something; charset=UTF-8')
     self.assertEqual('multipart/form-data', header)
     self.assertEqual({'charset': 'UTF-8', 'boundary': 'something'}, subheaders)
 def _get_boundary(self, request):
     (_, header_params) = tornado_utils.parse_header(request.headers['Content-Type'])
     boundary = ('--' + header_params['boundary']).encode('utf-8')
     return boundary
 def test_subheader_with_quotes(self):
     (header,
      subheaders) = parse_header('Content-Type: text/html; charset="UTF-8"')
     self.assertEqual('text/html', header)
     self.assertEqual({'charset': 'UTF-8'}, subheaders)
 def test_header_with_subheader_without_val(self):
     (header, subheaders) = parse_header(
         'Content-Type: multipart/form-data; crossorigin; charset=UTF-8')
     self.assertEqual('multipart/form-data', header)
     self.assertEqual({'charset': 'UTF-8', 'crossorigin': ''}, subheaders)
 def test_simple_header(self):
     (header, subheaders) = parse_header('Content-Type: text/html')
     self.assertEqual('text/html', header)
     self.assertEqual({}, subheaders)
 def _get_boundary(self, request):
     (_, header_params) = tornado_utils.parse_header(
         request.headers['Content-Type'])
     boundary = ('--' + header_params['boundary']).encode('utf-8')
     return boundary