summaryrefslogtreecommitdiff
path: root/lib/chef_zero/endpoints/actor_keys_endpoint.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef_zero/endpoints/actor_keys_endpoint.rb')
-rw-r--r--lib/chef_zero/endpoints/actor_keys_endpoint.rb30
1 files changed, 16 insertions, 14 deletions
diff --git a/lib/chef_zero/endpoints/actor_keys_endpoint.rb b/lib/chef_zero/endpoints/actor_keys_endpoint.rb
index 8bf3981..ba91a6b 100644
--- a/lib/chef_zero/endpoints/actor_keys_endpoint.rb
+++ b/lib/chef_zero/endpoints/actor_keys_endpoint.rb
@@ -1,4 +1,3 @@
-require 'ffi_yajl'
require 'chef_zero/rest_base'
module ChefZero
@@ -13,8 +12,7 @@ module ChefZero
path = data_path(request)
# Get actor or 404 if it doesn't exist
- actor_path = request.rest_path[ client?(request) ? 0..3 : 0..1 ]
- actor_json = get_data(request, actor_path)
+ actor_json = get_data(request, actor_path(request))
key_names = list_data_or_else(request, path, [])
key_names.unshift(DEFAULT_PUBLIC_KEY_NAME) if actor_has_default_public_key?(actor_json)
@@ -27,11 +25,10 @@ module ChefZero
end
def post(request)
- request_body = FFI_Yajl::Parser.parse(request.body, create_additions: false)
+ request_body = parse_json(request.body)
# Try loading the client or user so a 404 is returned if it doesn't exist
- actor_path = request.rest_path[ client?(request) ? 0..3 : 0..1 ]
- actor_json = get_data(request, actor_path)
+ actor_json = get_data(request, actor_path(request))
generate_keys = request_body["public_key"].nil?
@@ -44,7 +41,7 @@ module ChefZero
key_name = request_body["name"]
if key_name == DEFAULT_PUBLIC_KEY_NAME
- store_actor_default_public_key!(request, actor_path, actor_json, public_key)
+ store_actor_default_public_key!(request, actor_json, public_key)
else
store_actor_public_key!(request, key_name, public_key, request_body["expiration_date"])
end
@@ -59,7 +56,7 @@ module ChefZero
private
def store_actor_public_key!(request, name, public_key, expiration_date)
- data = FFI_Yajl::Encoder.encode(
+ data = to_json(
"name" => name,
"public_key" => public_key,
"expiration_date" => expiration_date
@@ -68,15 +65,16 @@ module ChefZero
create_data(request, data_path(request), name, data, :create_dir)
end
- def store_actor_default_public_key!(request, actor_path, actor_json, public_key)
- actor_data = FFI_Yajl::Parser.parse(actor_json, create_additions: false)
+ def store_actor_default_public_key!(request, actor_json, public_key)
+ actor_data = parse_json(actor_json)
if actor_data["public_key"]
raise RestErrorResponse.new(409, "Object already exists: #{key_uri(request, DEFAULT_PUBLIC_KEY_NAME)}")
end
actor_data["public_key"] = public_key
- set_data(request, actor_path, FFI_Yajl::Encoder.encode(actor_data, pretty: true))
+ set_data(request, actor_path(request), to_json(actor_data))
+
end
# Returns the keys data store path, which is the same as
@@ -97,7 +95,7 @@ module ChefZero
if data_path[-1] == DEFAULT_PUBLIC_KEY_NAME
[ DEFAULT_PUBLIC_KEY_NAME, "infinity" ]
else
- FFI_Yajl::Parser.parse(get_data(request, data_path), create_additions: false)
+ parse_json(get_data(request, data_path))
.values_at("name", "expiration_date")
end
@@ -117,9 +115,13 @@ module ChefZero
build_uri(request.base_uri, [ *request.rest_path, key_name ])
end
+ def actor_path(request)
+ return request.rest_path[0..3] if client?(request)
+ request.rest_path[0..1]
+ end
+
def actor_has_default_public_key?(actor_json)
- actor_data = FFI_Yajl::Parser.parse(actor_json, create_additions: false)
- !!actor_data["public_key"]
+ !!parse_json(actor_json)["public_key"]
end
end
end