def base_handle_copy_request(self, src_container, src_obj,
                                 dest_container, dest_object):
        # Get an iterator over the source object
        source_path = '/%s/%s/%s/%s' % (self.api_version, self.account,
                                        src_container, src_obj)
        source_req = self.request.copy_get()
        source_req.headers.pop('X-Backend-Storage-Policy-Index', None)
        source_req.headers.pop('X-Run-Storlet', None)
        source_req.path_info = source_path
        source_req.headers['X-Newest'] = 'true'

        source_resp = source_req.get_response(self.app)

        # Do proxy copy flow
        (out_md, app_iter) = self.gateway.gatewayProxyCopyFlow(self.request,
                                                               dest_container,
                                                               dest_object,
                                                               source_resp)

        resp = self.handle_put_copy_response(out_md, app_iter)
        acct, path = source_resp.environ['PATH_INFO'].split('/', 3)[2:4]
        resp.headers['X-Storlet-Generated-From-Account'] = quote(acct)
        resp.headers['X-Storlet-Generated-From'] = quote(path)
        if 'last-modified' in source_resp.headers:
            resp.headers['X-Storlet-Generated-From-Last-Modified'] = \
                source_resp.headers['last-modified']
        return resp
Unified path for:
dataset/ETHPy150Open openstack/storlets/Engine/swift/storlet_middleware/storlet_handler.py/StorletProxyHandler.base_handle_copy_request