def test_dict(self): for fieldname, value in iter_fields(dict(a='b')): self.assertEqual((fieldname, value), ('a', 'b')) self.assertEqual( list(sorted(iter_fields(dict(a='b', c='d')))), [('a', 'b'), ('c', 'd')])
def test_tuple_list(self): for fieldname, value in iter_fields([('a', 'b')]): self.assertEqual((fieldname, value), ('a', 'b')) self.assertEqual( list(iter_fields([('a', 'b'), ('c', 'd')])), [('a', 'b'), ('c', 'd')])
def test_tuple_list(self): for fieldname, value in iter_fields([('a', 'b')]): assert (fieldname, value) == ('a', 'b') assert ( list(iter_fields([('a', 'b'), ('c', 'd')])) == [('a', 'b'), ('c', 'd')])
def test_dict(self): for fieldname, value in iter_fields(dict(a='b')): assert (fieldname, value) == ('a', 'b') assert ( list(sorted(iter_fields(dict(a='b', c='d')))) == [('a', 'b'), ('c', 'd')])
def encode_multipart_formdata(self, fields, boundary=None): """ Encode a dictionary of ``fields`` using the multipart/form-data mime format. :param fields: Dictionary of fields or list of (key, value) field tuples. The key is treated as the field name, and the value as the body of the form-data bytes. If the value is a tuple of two elements, then the first element is treated as the filename of the form-data section. Field names and filenames must be unicode. :param boundary: If not specified, then a random boundary will be generated using :func:`mimetools.choose_boundary`. """ body = BytesIO() if boundary is None: boundary = mimetools.choose_boundary() for fieldname, value in iter_fields(fields): body.write('--%s\r\n' % (boundary)) if isinstance(value, tuple): filename, data = value writer(body).write('Content-Disposition: form-data; name="%s"; ' 'filename="%s"\r\n' % (fieldname, filename)) body.write('Content-Type: %s\r\n\r\n' % (self.get_content_type(filename))) else: data = value writer(body).write('Content-Disposition: form-data; name="%s"\r\n' % (fieldname)) body.write(b'Content-Type: text/plain\r\n\r\n') if isinstance(data, int): data = str(data) # Backwards compatibility if isinstance(data, unicode): writer(body).write(data) else: body.write(data) body.write(b'\r\n') body.write('--%s--\r\n' % (boundary)) content_type = 'multipart/form-data; boundary=%s' % boundary return body.getvalue(), content_type
def test_tuple_list(self): for fieldname, value in iter_fields([("a", "b")]): assert (fieldname, value) == ("a", "b") assert list(iter_fields([("a", "b"), ("c", "d")])) == [("a", "b"), ("c", "d")]
def test_dict(self): for fieldname, value in iter_fields(dict(a="b")): assert (fieldname, value) == ("a", "b") assert list(sorted(iter_fields(dict(a="b", c="d")))) == [("a", "b"), ("c", "d")]