def __init__(self, s3_req, sw_req, sw_resp): if sw_resp.app_iter: body = None app_iter = sw_resp.app_iter else: body = sw_resp.body app_iter = None self.swift3_headers = HeaderKeyDict() self.sw_headers = HeaderKeyDict() headers = HeaderKeyDict() for key, val in sw_resp.headers.iteritems(): _key = key.lower() if "[swift3]" in _key: self.swift3_headers[_key] = val if _key == 'x-object-meta-[swift3]-versioned' and \ 'x-object-meta-[swift3]-timestamp' in sw_resp.headers: from swift3.request import VersionId ts_key = 'x-object-meta-[swift3]-timestamp' headers['x-amz-version-id'] = \ str(VersionId(sw_resp.headers[ts_key])) if _key == 'x-object-meta-[swift3]-delete-marker': headers['x-amz-delete-marker'] = val if _key == 'x-object-meta-[swift3]-missing-meta': headers['x-amz-missing-meta'] = val elif _key.startswith('x-object-meta-'): headers['x-amz-meta-' + key[14:]] = val elif _key in ('content-length', 'content-type', 'content-range', 'content-encoding', 'etag', 'last-modified'): headers[key] = val else: self.sw_headers[key] = val Response.__init__(self, status=sw_resp.status, headers=headers, request=sw_req, body=body, app_iter=app_iter, conditional_response=sw_resp.conditional_response) self.environ.update(sw_resp.environ) self.s3_req = s3_req