| Index: third_party/requests/packages/urllib3/filepost.py
|
| diff --git a/third_party/requests/packages/urllib3/filepost.py b/third_party/requests/packages/urllib3/filepost.py
|
| index 470309a0066e6ace43d0730fe4a76e7d67a4c538..4575582e91c57b7f0a194020effd48747d471cd6 100644
|
| --- a/third_party/requests/packages/urllib3/filepost.py
|
| +++ b/third_party/requests/packages/urllib3/filepost.py
|
| @@ -1,5 +1,5 @@
|
| # urllib3/filepost.py
|
| -# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
|
| +# Copyright 2008-2013 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
|
| #
|
| # This module is part of urllib3 and is released under
|
| # the MIT License: http://www.opensource.org/licenses/mit-license.php
|
| @@ -12,6 +12,7 @@ from io import BytesIO
|
|
|
| from .packages import six
|
| from .packages.six import b
|
| +from .fields import RequestField
|
|
|
| writer = codecs.lookup('utf-8')[3]
|
|
|
| @@ -23,15 +24,38 @@ def choose_boundary():
|
| return uuid4().hex
|
|
|
|
|
| -def get_content_type(filename):
|
| - return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
|
| +def iter_field_objects(fields):
|
| + """
|
| + Iterate over fields.
|
| +
|
| + Supports list of (k, v) tuples and dicts, and lists of
|
| + :class:`~urllib3.fields.RequestField`.
|
| +
|
| + """
|
| + if isinstance(fields, dict):
|
| + i = six.iteritems(fields)
|
| + else:
|
| + i = iter(fields)
|
| +
|
| + for field in i:
|
| + if isinstance(field, RequestField):
|
| + yield field
|
| + else:
|
| + yield RequestField.from_tuples(*field)
|
|
|
|
|
| def iter_fields(fields):
|
| """
|
| Iterate over fields.
|
|
|
| + .. deprecated ::
|
| +
|
| + The addition of `~urllib3.fields.RequestField` makes this function
|
| + obsolete. Instead, use :func:`iter_field_objects`, which returns
|
| + `~urllib3.fields.RequestField` objects, instead.
|
| +
|
| Supports list of (k, v) tuples and dicts.
|
| +
|
| """
|
| if isinstance(fields, dict):
|
| return ((k, v) for k, v in six.iteritems(fields))
|
| @@ -44,15 +68,7 @@ def encode_multipart_formdata(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) or (key, value, MIME type)
|
| - 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 and a suitable MIME type is guessed based on the
|
| - filename. If the value is a tuple of three elements, then the third
|
| - element is treated as an explicit MIME type of the form-data section.
|
| -
|
| - Field names and filenames must be unicode.
|
| + Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`).
|
|
|
| :param boundary:
|
| If not specified, then a random boundary will be generated using
|
| @@ -62,24 +78,11 @@ def encode_multipart_formdata(fields, boundary=None):
|
| if boundary is None:
|
| boundary = choose_boundary()
|
|
|
| - for fieldname, value in iter_fields(fields):
|
| + for field in iter_field_objects(fields):
|
| body.write(b('--%s\r\n' % (boundary)))
|
|
|
| - if isinstance(value, tuple):
|
| - if len(value) == 3:
|
| - filename, data, content_type = value
|
| - else:
|
| - filename, data = value
|
| - content_type = get_content_type(filename)
|
| - writer(body).write('Content-Disposition: form-data; name="%s"; '
|
| - 'filename="%s"\r\n' % (fieldname, filename))
|
| - body.write(b('Content-Type: %s\r\n\r\n' %
|
| - (content_type,)))
|
| - else:
|
| - data = value
|
| - writer(body).write('Content-Disposition: form-data; name="%s"\r\n'
|
| - % (fieldname))
|
| - body.write(b'\r\n')
|
| + writer(body).write(field.render_headers())
|
| + data = field.data
|
|
|
| if isinstance(data, int):
|
| data = str(data) # Backwards compatibility
|
|
|