diff options
author | Shubham Saini <shubham6405@gmail.com> | 2018-12-11 10:01:23 +0000 |
---|---|---|
committer | Shubham Saini <shubham6405@gmail.com> | 2018-12-11 10:01:23 +0000 |
commit | 68df54d6629ec019142eb149dd037774f2d11e7c (patch) | |
tree | 345bc22d46b4e01a4ba8303b94278952a4ed2b9e /venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/filepost.py |
First commit
Diffstat (limited to 'venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/filepost.py')
-rw-r--r-- | venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/filepost.py | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/filepost.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/filepost.py new file mode 100644 index 0000000..e53dedc --- /dev/null +++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/urllib3/filepost.py | |||
@@ -0,0 +1,94 @@ | |||
1 | from __future__ import absolute_import | ||
2 | import codecs | ||
3 | |||
4 | from uuid import uuid4 | ||
5 | from io import BytesIO | ||
6 | |||
7 | from .packages import six | ||
8 | from .packages.six import b | ||
9 | from .fields import RequestField | ||
10 | |||
11 | writer = codecs.lookup('utf-8')[3] | ||
12 | |||
13 | |||
14 | def choose_boundary(): | ||
15 | """ | ||
16 | Our embarrassingly-simple replacement for mimetools.choose_boundary. | ||
17 | """ | ||
18 | return uuid4().hex | ||
19 | |||
20 | |||
21 | def iter_field_objects(fields): | ||
22 | """ | ||
23 | Iterate over fields. | ||
24 | |||
25 | Supports list of (k, v) tuples and dicts, and lists of | ||
26 | :class:`~urllib3.fields.RequestField`. | ||
27 | |||
28 | """ | ||
29 | if isinstance(fields, dict): | ||
30 | i = six.iteritems(fields) | ||
31 | else: | ||
32 | i = iter(fields) | ||
33 | |||
34 | for field in i: | ||
35 | if isinstance(field, RequestField): | ||
36 | yield field | ||
37 | else: | ||
38 | yield RequestField.from_tuples(*field) | ||
39 | |||
40 | |||
41 | def iter_fields(fields): | ||
42 | """ | ||
43 | .. deprecated:: 1.6 | ||
44 | |||
45 | Iterate over fields. | ||
46 | |||
47 | The addition of :class:`~urllib3.fields.RequestField` makes this function | ||
48 | obsolete. Instead, use :func:`iter_field_objects`, which returns | ||
49 | :class:`~urllib3.fields.RequestField` objects. | ||
50 | |||
51 | Supports list of (k, v) tuples and dicts. | ||
52 | """ | ||
53 | if isinstance(fields, dict): | ||
54 | return ((k, v) for k, v in six.iteritems(fields)) | ||
55 | |||
56 | return ((k, v) for k, v in fields) | ||
57 | |||
58 | |||
59 | def encode_multipart_formdata(fields, boundary=None): | ||
60 | """ | ||
61 | Encode a dictionary of ``fields`` using the multipart/form-data MIME format. | ||
62 | |||
63 | :param fields: | ||
64 | Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`). | ||
65 | |||
66 | :param boundary: | ||
67 | If not specified, then a random boundary will be generated using | ||
68 | :func:`mimetools.choose_boundary`. | ||
69 | """ | ||
70 | body = BytesIO() | ||
71 | if boundary is None: | ||
72 | boundary = choose_boundary() | ||
73 | |||
74 | for field in iter_field_objects(fields): | ||
75 | body.write(b('--%s\r\n' % (boundary))) | ||
76 | |||
77 | writer(body).write(field.render_headers()) | ||
78 | data = field.data | ||
79 | |||
80 | if isinstance(data, int): | ||
81 | data = str(data) # Backwards compatibility | ||
82 | |||
83 | if isinstance(data, six.text_type): | ||
84 | writer(body).write(data) | ||
85 | else: | ||
86 | body.write(data) | ||
87 | |||
88 | body.write(b'\r\n') | ||
89 | |||
90 | body.write(b('--%s--\r\n' % (boundary))) | ||
91 | |||
92 | content_type = str('multipart/form-data; boundary=%s' % boundary) | ||
93 | |||
94 | return body.getvalue(), content_type | ||