예제 #1
0
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)
예제 #2
0
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