Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # This software code is made available "AS IS" without warranties of any
- # kind. You may copy, display, modify and redistribute the software
- # code either by itself or as incorporated into your code; provided that
- # you do not remove any proprietary notices. Your use of this software
- # code is at your own risk and you waive any claim against Amazon
- # Digital Services, Inc. or its affiliates with respect to your use of
- # this software code. (c) 2006 Amazon Digital Services, Inc. or its
- # affiliates.
- # generates the aws canonical string for the given parameters
- def canonical_string(method, path, headers, expires=None):
- interesting_headers = {}
- for key in headers:
- lk = key.lower()
- if lk in ['content-md5', 'content-type', 'date'] or lk.startswith(AMAZON_HEADER_PREFIX):
- interesting_headers[lk] = headers[key].strip()
- # these keys get empty strings if they don't exist
- if not interesting_headers.has_key('content-type'):
- interesting_headers['content-type'] = ''
- if not interesting_headers.has_key('content-md5'):
- interesting_headers['content-md5'] = ''
- # just in case someone used this. it's not necessary in this lib.
- if interesting_headers.has_key('x-amz-date'):
- interesting_headers['date'] = ''
- # if you're using expires for query string auth, then it trumps date
- # (and x-amz-date)
- if expires:
- interesting_headers['date'] = str(expires)
- sorted_header_keys = interesting_headers.keys()
- sorted_header_keys.sort()
- buf = "%s\n" % method
- for key in sorted_header_keys:
- if key.startswith(AMAZON_HEADER_PREFIX):
- buf += "%s:%s\n" % (key, interesting_headers[key])
- else:
- buf += "%s\n" % interesting_headers[key]
- # don't include anything after the first ? in the resource...
- buf += "/%s" % path.split('?')[0]
- # ...unless there is an acl or torrent parameter
- if re.search("[&?]acl($|=|&)", path):
- buf += "?acl"
- elif re.search("[&?]torrent($|=|&)", path):
- buf += "?torrent"
- return buf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement