def _cookies_from_headers(headers): # Temporarily remove the comma from expires date strings date_safe = re.sub(r'expires=(...),', r'expires=\1#', headers['set-cookie'], flags=re.IGNORECASE) # Split cookies by newline instead of commas line_split = "\n".join([c.strip() for c in date_safe.split(",")]) # Restore date commas cookie_string = re.sub(r'expires=(...)#', r'expires=\1,', line_split, flags=re.IGNORECASE) try: import http.cookies as cookies resp_cookie = cookies.SimpleCookie() resp_cookie.load(cookie_string) cookies_dict = {name: v.value for name, v in resp_cookie.items()} except ImportError: from cookies import Cookies resp_cookies = Cookies.from_response(cookie_string) cookies_dict = {v.name: v.value for _, v in resp_cookies.items()} return cookiejar_from_dict(cookies_dict)
def _cookies_from_headers(headers): try: import http.cookies as cookies resp_cookie = cookies.SimpleCookie() resp_cookie.load(headers["set-cookie"]) cookies_dict = {name: v.value for name, v in resp_cookie.items()} except ImportError: from cookies import Cookies resp_cookies = Cookies.from_response(headers["set-cookie"]) cookies_dict = {v.name: v.value for _, v in resp_cookies.items()} return cookiejar_from_dict(cookies_dict)
def request(self, method, url, query_params=None, headers=None, post_params=None, body=None, _preload_content=True, _request_timeout=None): if self.authentication is not None: if headers is None: headers = {} headers['X-Auth-Token'] = authentication.getToken() if self.cookies is not None and len(self.cookies) > 0: headers['Cookie'] = self.cookies.render_request() response = super(SciServerClient, self).request(method, url, query_params, headers, post_params, body, _preload_content, _request_timeout) set_cookies = [] if _preload_content: cc = response.urllib3_response.headers._container else: cc = response.headers._container if 'set-cookie' in cc: c = cc['set-cookie'] for i in range(1, len(c)): set_cookies.append(c[i]) if set_cookies: for c in set_cookies: cc = Cookies.from_response(c) for key in cc: self.cookies.add(cc[key]) return response