diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2016-05-21 11:37:36 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2016-05-21 11:37:36 +1200 |
commit | a5c4cd034081d7dcdbd4b46bd69718edb45d4719 (patch) | |
tree | 52accc866d25c735e6c36f05255bb3f5349f8ac7 /netlib/http/response.py | |
parent | 96d8ec1ee33b076a472afc3053fdd8256559fcc3 (diff) | |
download | mitmproxy-a5c4cd034081d7dcdbd4b46bd69718edb45d4719.tar.gz mitmproxy-a5c4cd034081d7dcdbd4b46bd69718edb45d4719.tar.bz2 mitmproxy-a5c4cd034081d7dcdbd4b46bd69718edb45d4719.zip |
A clearer implementation of MultiDictView
This makes MultiDictView work with a simple getter/setter pair, rather than
using attributes with implicit leading underscores. Also move MultiDictView
into multidict.py and adds some simple unit tests.
Diffstat (limited to 'netlib/http/response.py')
-rw-r--r-- | netlib/http/response.py | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/netlib/http/response.py b/netlib/http/response.py index 6d56fc1f..7d272e10 100644 --- a/netlib/http/response.py +++ b/netlib/http/response.py @@ -5,7 +5,8 @@ import time from . import cookies from .headers import Headers -from .message import Message, _native, _always_bytes, MessageData, MultiDictView +from .message import Message, _native, _always_bytes, MessageData +from ..multidict import MultiDictView from .. import utils @@ -80,21 +81,26 @@ class Response(Message): Caveats: Updating the attr """ - return MultiDictView("cookies", self) + return MultiDictView( + self._get_cookies, + self._set_cookies + ) - @property - def _cookies(self): + def _get_cookies(self): h = self.headers.get_all("set-cookie") return tuple(cookies.parse_set_cookie_headers(h)) - @cookies.setter - def cookies(self, all_cookies): + def _set_cookies(self, value): cookie_headers = [] - for k, v in all_cookies: + for k, v in value: header = cookies.format_set_cookie_header(k, v[0], v[1]) cookie_headers.append(header) self.headers.set_all("set-cookie", cookie_headers) + @cookies.setter + def cookies(self, value): + self._set_cookies(value) + def refresh(self, now=None): """ This fairly complex and heuristic function refreshes a server |