diff options
Diffstat (limited to 'lib/chef_zero/endpoints/actor_key_endpoint.rb')
-rw-r--r-- | lib/chef_zero/endpoints/actor_key_endpoint.rb | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/chef_zero/endpoints/actor_key_endpoint.rb b/lib/chef_zero/endpoints/actor_key_endpoint.rb index 4cfd4b2..98229fc 100644 --- a/lib/chef_zero/endpoints/actor_key_endpoint.rb +++ b/lib/chef_zero/endpoints/actor_key_endpoint.rb @@ -7,12 +7,12 @@ module ChefZero # /organizations/ORG/clients/CLIENT/keys/NAME class ActorKeyEndpoint < RestBase def get(request) - path = [ "user_keys", *request.rest_path[1..-1] ] + path = data_path(request) already_json_response(200, get_data(request, path)) end def delete(request) - path = [ "user_keys", *request.rest_path[1..-1] ] + path = data_path(request) data = get_data(request, path) delete_data(request, path) @@ -21,13 +21,18 @@ module ChefZero end def put(request) - path = [ "user_keys", *request.rest_path[1..-1] ] - # We grab the old data to trigger a 404 if it doesn't exist - get_data(request, path) + get_data(request, data_path(request)) set_data(request, path, request.body) end + + private + + def data_path(request) + root = request.rest_path[2] == "clients" ? "client_keys" : "user_keys" + [root, *request.rest_path.last(3) ] + end end end end |