class ChefZero::Endpoints::DataBagsEndpoint

/data

Public Instance Methods

post(request) click to toggle source
# File lib/chef_zero/endpoints/data_bags_endpoint.rb, line 8
def post(request)
  contents = request.body
  json = FFI_Yajl::Parser.parse(contents)
  name = identity_keys.map { |k| json[k] }.select { |v| v }.first
  if name.nil?
    error(400, "Must specify #{identity_keys.map(&:inspect).join(" or ")} in JSON")
  elsif exists_data_dir?(request, request.rest_path[0..1] + ["data", name])
    error(409, "Object already exists")
  else
    create_data_dir(request, request.rest_path[0..1] + ["data"], name, :recursive)
    json_response(201, { "uri" => (build_uri(request.base_uri, request.rest_path + [name])).to_s })
  end
end