def _handle_headers(self, headers):
     if not headers:
         return
     if find_matching_headers("Content-Encoding", headers):
         self.content_encoding = merge_headers_by_name("Content-Encoding", headers)
     if find_matching_headers("Content-Type", headers):
         self.content_type = merge_headers_by_name("Content-Type", headers)
     if find_matching_headers("Content-Language", headers):
         self.content_language = merge_headers_by_name("Content-Language", headers)
 def _handle_headers(self, headers):
     if not headers:
         return
     if find_matching_headers('Content-Encoding', headers):
         self.content_encoding = merge_headers_by_name(
             'Content-Encoding', headers)
     if find_matching_headers('Content-Type', headers):
         self.content_type = merge_headers_by_name('Content-Type', headers)
     if find_matching_headers('Content-Language', headers):
         self.content_language = merge_headers_by_name(
             'Content-Language', headers)
Exemple #3
0
def upload_pseudo_file(bucket, key_name, length,
                       chunk_size_list=None, **kwargs):
    '''Set contents of key from pseudofile with large size.
    '''
    if 'headers' in kwargs:
        headers = kwargs['headers'].copy()
    else:
        headers = {}

    if 'query_args' in kwargs:
        query_args = kwargs['query_args']
    else:
        query_args = None

    # Overwrite user-supplied user-agent.
    for header in find_matching_headers('User-Agent', headers):
        del headers[header]
    headers['User-Agent'] = UserAgent

    # Overwrite user-supplied date.
    for header in find_matching_headers('Date', headers):
        del headers[header]

    utc_time = time.strftime('%a, %d %b %Y %H:%M:%S GMT',
                             time.localtime(time.time()))
    headers['Date'] = utc_time

    hash_string = 'PUT' + '\n' + '\n' + '\n' + utc_time + '\n'

    request_resource = '/' + urllib.quote(bucket.name, '') + \
                       '/' + urllib.quote(key_name, '')

    if query_args:
        request_resource += '?' + query_args
    hash_string += request_resource

    signature = get_signature(bucket.connection.provider.secret_key,
                              hash_string)
    authorization = 'AWS' + ' ' + bucket.connection.provider.access_key + \
                    ":" + signature

    pseudofile = filehelper.PseudoFile(length)
    if not find_matching_headers('Content-Length', headers):
        headers['Content-Length'] = length

    if not find_matching_headers('Authorization', headers):
        headers['Authorization'] = authorization

    return pseudofile, _make_request(bucket, 'PUT', request_resource,
                                     headers, pseudofile)