def put_static_obj_manifest(container, object, segments, options = {})
c = mock_container! container
errors = []
segments.each do |segment|
cname, oname = segment[:path].split('/', 2)
target_container = mock_container(cname)
raise Fog::Storage::Rackspace::NotFound.new unless target_container
target_object = target_container.mock_object oname
unless target_object
errors << [segment[:path], '404 Not Found']
next
end
unless target_object.hash == segment[:etag]
errors << [segment[:path], 'Etag Mismatch']
end
unless target_object.bytes_used == segment[:size_bytes]
errors << [segment[:path], 'Size Mismatch']
end
end
unless errors.empty?
response = Excon::Response.new
response.status = 400
response.body = Fog::JSON.encode({ 'Errors' => errors })
error = Excon::Errors.status_error({}, response)
raise Fog::Storage::Rackspace::BadRequest.slurp(error)
end
data = Fog::JSON.encode(segments)
o = c.add_object object, data
o.static_manifest = true
response = Excon::Response.new
response.status = 201
response
end