def copy(object_name, container_name, headers = {})
provided_headers = (headers[:metadata] || {}).inject({}){|res, (k,v)| ((k.to_s.match /^X-Object-Meta-/i) ? res[k.to_s]=v : res["X-Object-Meta-#{k.to_s}"]=v) ;res}
provided_headers["content-type"] = headers[:content_type] unless headers[:content_type].nil?
provided_headers["X-Copy-From"] = "/#{@containername}/#{@name}"
provided_headers["content-length"] = "0"
path = "/#{container_name}/#{object_name}"
begin
response = @container.swift.connection.req("PUT", URI.encode(path), {:headers=>provided_headers})
rescue OpenStack::Exception::ItemNotFound => not_found
msg = "Can't copy \"#{@name}\": No Object \"#{@name}\" found in Container \"#{@containername}\". #{not_found.message}"
raise OpenStack::Exception::ItemNotFound.new(msg, not_found.response_code, not_found.response_body)
end
OpenStack::Swift::StorageObject.new(@container.swift.container(container_name), object_name)
end