Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/urllib3/util/response.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:d30785e31577 | 1:56ad4e20f292 |
---|---|
1 from __future__ import absolute_import | |
2 from ..packages.six.moves import http_client as httplib | |
3 | |
4 from ..exceptions import HeaderParsingError | |
5 | |
6 | |
7 def is_fp_closed(obj): | |
8 """ | |
9 Checks whether a given file-like object is closed. | |
10 | |
11 :param obj: | |
12 The file-like object to check. | |
13 """ | |
14 | |
15 try: | |
16 # Check `isclosed()` first, in case Python3 doesn't set `closed`. | |
17 # GH Issue #928 | |
18 return obj.isclosed() | |
19 except AttributeError: | |
20 pass | |
21 | |
22 try: | |
23 # Check via the official file-like-object way. | |
24 return obj.closed | |
25 except AttributeError: | |
26 pass | |
27 | |
28 try: | |
29 # Check if the object is a container for another file-like object that | |
30 # gets released on exhaustion (e.g. HTTPResponse). | |
31 return obj.fp is None | |
32 except AttributeError: | |
33 pass | |
34 | |
35 raise ValueError("Unable to determine whether fp is closed.") | |
36 | |
37 | |
38 def assert_header_parsing(headers): | |
39 """ | |
40 Asserts whether all headers have been successfully parsed. | |
41 Extracts encountered errors from the result of parsing headers. | |
42 | |
43 Only works on Python 3. | |
44 | |
45 :param headers: Headers to verify. | |
46 :type headers: `httplib.HTTPMessage`. | |
47 | |
48 :raises urllib3.exceptions.HeaderParsingError: | |
49 If parsing errors are found. | |
50 """ | |
51 | |
52 # This will fail silently if we pass in the wrong kind of parameter. | |
53 # To make debugging easier add an explicit check. | |
54 if not isinstance(headers, httplib.HTTPMessage): | |
55 raise TypeError("expected httplib.Message, got {0}.".format(type(headers))) | |
56 | |
57 defects = getattr(headers, "defects", None) | |
58 get_payload = getattr(headers, "get_payload", None) | |
59 | |
60 unparsed_data = None | |
61 if get_payload: | |
62 # get_payload is actually email.message.Message.get_payload; | |
63 # we're only interested in the result if it's not a multipart message | |
64 if not headers.is_multipart(): | |
65 payload = get_payload() | |
66 | |
67 if isinstance(payload, (bytes, str)): | |
68 unparsed_data = payload | |
69 | |
70 if defects or unparsed_data: | |
71 raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data) | |
72 | |
73 | |
74 def is_response_to_head(response): | |
75 """ | |
76 Checks whether the request of a response has been a HEAD-request. | |
77 Handles the quirks of AppEngine. | |
78 | |
79 :param conn: | |
80 :type conn: :class:`httplib.HTTPResponse` | |
81 """ | |
82 # FIXME: Can we do this somehow without accessing private httplib _method? | |
83 method = response._method | |
84 if isinstance(method, int): # Platform-specific: Appengine | |
85 return method == 3 | |
86 return method.upper() == "HEAD" |