13from .compat
import HTTPResponse, pickle, text_type
24_default_body_read = object()
28 def dumps(self, request, response, body=None):
61 if u"vary" in response_headers:
62 varied_headers = response_headers[
u"vary"].split(
",")
63 for header
in varied_headers:
64 header = text_type(header).strip()
66 if header_value
is not None:
67 header_value = text_type(header_value)
68 data[
u"vary"][header] = header_value
70 return b
",".join([b
"cc=4",
msgpack.dumps(data, use_bin_type=
True)])
72 def loads(self, request, data, body_file=None):
91 ver =
ver.split(b
"=", 1)[-1].decode(
"ascii")
95 return getattr(self,
"_loads_v{}".format(ver))(request, data, body_file)
97 except AttributeError:
103 """Verify our vary headers match and construct a real urllib3
115 for header, value
in cached.get(
"vary", {}).items():
119 body_raw = cached[
"response"].pop(
"body")
122 if headers.get(
"transfer-encoding",
"") ==
"chunked":
125 cached[
"response"][
"headers"] = headers
128 if body_file
is None:
141 return HTTPResponse(body=body, preload_content=
False, **cached[
"response"])
155 return self.prepare_response(request, cached, body_file)
158 assert body_file
is None
166 cached[
"response"][
"headers"] = dict(
168 for k, v
in cached[
"response"][
"headers"].items()
170 cached[
"response"][
"reason"] =
_b64_decode_str(cached[
"response"][
"reason"])
171 cached[
"vary"] = dict(
173 for k, v
in cached[
"vary"].items()
190 return self.prepare_response(request, cached, body_file)
_loads_v4(self, request, data, body_file=None)
_loads_v2(self, request, data, body_file=None)
_loads_v3(self, request, data, body_file)
prepare_response(self, request, cached, body_file=None)
_loads_v1(self, request, data, body_file=None)
_loads_v0(self, request, data, body_file=None)