class ChefZero::Endpoints::ActorKeyEndpoint

ActorKeyEndpoint

This class handles DELETE/GET/PUT requests for all client/user keys except default public keys, i.e. requests with identity key “default”. Those are handled by ActorDefaultKeyEndpoint. See that class for more information.

/users/USER/keys/NAME /organizations/ORG/clients/CLIENT/keys/NAME

Public Instance Methods

delete(request) click to toggle source
# File lib/chef_zero/endpoints/actor_key_endpoint.rb, line 21
def delete(request)
  validate_actor!(request) # 404 if actor doesn't exist

  key_path = data_path(request)
  data = get_data(request, key_path)
  delete_data(request, key_path)

  already_json_response(200, data)
end
get(request) click to toggle source
# File lib/chef_zero/endpoints/actor_key_endpoint.rb, line 15
def get(request)
  validate_actor!(request)
  key_path = data_path(request)
  already_json_response(200, get_data(request, key_path))
end
put(request) click to toggle source
# File lib/chef_zero/endpoints/actor_key_endpoint.rb, line 31
def put(request)
  validate_actor!(request) # 404 if actor doesn't exist
  set_data(request, data_path(request), request.body)
end

Private Instance Methods

client?(request) click to toggle source
# File lib/chef_zero/endpoints/actor_key_endpoint.rb, line 57
def client?(request)
  request.rest_path[2] == "clients"
end
data_path(request) click to toggle source

Returns the keys data store path, which is the same as `request.rest_path` except with “client_keys” instead of “clients” or “user_keys” instead of “users.”

# File lib/chef_zero/endpoints/actor_key_endpoint.rb, line 41
def data_path(request)
  request.rest_path.dup.tap do |path|
    if client?(request)
      path[2] = "client_keys"
    else
      path[0] = "user_keys"
    end
  end
end
validate_actor!(request) click to toggle source

Raises RestErrorResponse (404) if actor doesn't exist

# File lib/chef_zero/endpoints/actor_key_endpoint.rb, line 52
def validate_actor!(request)
  actor_path = request.rest_path[ client?(request) ? 0..3 : 0..1 ]
  get_data(request, actor_path)
end