def generate_url(self, expires_in, method, bucket='', key='', headers=None, query_auth=True, force_http=False, response_headers=None, expires_in_absolute=False, version_id=None): headers = headers or {} if expires_in_absolute: expires = int(expires_in) else: expires = int(time.time() + expires_in) auth_path = self.calling_format.build_auth_path(bucket, key) auth_path = self.get_path(auth_path) # optional version_id and response_headers need to be added to # the query param list. extra_qp = [] if version_id is not None: extra_qp.append("versionId=%s" % version_id) if response_headers: for k, v in response_headers.items(): extra_qp.append("%s=%s" % (k, urllib.quote(v))) if extra_qp: delimiter = '?' if '?' not in auth_path else '&' auth_path += delimiter + '&'.join(extra_qp) #if not headers.has_key('Date'): # headers['Date'] = time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()) c_string = auth.canonical_string(method, bucket, key, headers=headers, expires=expires) b64_hmac = auth.encode(self.access_key_secret, c_string) encoded_canonical = urllib.quote(b64_hmac, safe='') self.calling_format.build_path_base(bucket, key) if query_auth: encode_ak = self.access_key_id #encode_ak = urllib.quote(self.access_key_id) #print 'encode_ak:%s'%encode_ak query_part = '?' + self.QueryString % (encoded_canonical, expires, encode_ak) else: query_part = '' if headers: hdr_prefix = self.provider.header_prefix for k, v in headers.items(): if k.startswith(hdr_prefix): # headers used for sig generation must be # included in the url also. extra_qp.append("%s=%s" % (k, urllib.quote(v))) if extra_qp: delimiter = '?' if not query_part else '&' query_part += delimiter + '&'.join(extra_qp) if force_http: protocol = 'http' port = 80 else: protocol = self.protocol port = self.port return self.calling_format.build_url_base(self, protocol, self.server_name(port), bucket, key) + query_part
def get_object_url(age, bucket="", key="", secret_access_key="", access_key_id="", query_args={}): expire = str(int(time.time()) + age) headers = {"Date": expire} c_string = canonical_string("GET", bucket, key, query_args, headers) path = c_string.split("\n")[-1] signature = urllib.quote_plus(encode(secret_access_key, c_string)) if "?" in path: url = "http://kss.ksyun.com%s&Expires=%s&AccessKeyId=%s&Signature=%s" % \ (path, expire, access_key_id, signature) else: url = "http://kss.ksyun.com%s?Expires=%s&AccessKeyId=%s&Signature=%s" % \ (path, expire, access_key_id, signature) return url
def get_object_url(age, bucket="", key="", secret_access_key="", access_key_id="", query_args={}): expire = str(int(time.time()) + age) headers = {"Date": expire} c_string = canonical_string("GET", bucket, key, query_args, headers) path = c_string.split("\n")[-1] signature = parse.quote_plus(encode(secret_access_key, c_string)) if "?" in path: url = "http://kss.ksyun.com%s&Expires=%s&AccessKeyId=%s&Signature=%s" % \ (path, expire, access_key_id, signature) else: url = "http://kss.ksyun.com%s?Expires=%s&AccessKeyId=%s&Signature=%s" % \ (path, expire, access_key_id, signature) return url