def make_data_to_sign(self, r, auth_header):
        if self.testurl:
            testparts = urlparse(self.testurl)
            requestparts = urlparse(r.url)
            url = urlunparse(testparts[0:2] + requestparts[2:])
        else:
            url = r.url

        parsed_url = urlparse(url)
        data_to_sign = '\t'.join([
            r.method,
            parsed_url.scheme,
            parsed_url.netloc,
            # Note: relative URL constraints are handled by requests when it sets up 'r'
            parsed_url.path + ('?' + parsed_url.query if parsed_url.query else ""),
            self.canonicalize_headers(r),
            self.make_content_hash(r),
            auth_header
        ])
        logger.debug('data to sign: %s', '\\t'.join(data_to_sign.split('\t')))
        return data_to_sign
Пример #2
0
def urlencode(url):
    p = list(urlparse(url))
    p[1] = p[1].encode('idna')
    for i in range(2, len(p)):
        p[i] = urllib.quote(p[i].encode('utf-8'))
    return urlunparse(p).encode('ascii')
Пример #3
0
def set_url_arg(url, arg, val):
    url_parts = list(urlparse.urlparse(url))
        query = dict(urlparse.parse_qsl(url_parts[4]))
        query.update({arg : str(val)})
        url_parts[4] = urlencode(query)
        return urlparse.urlunparse(url_parts)