diff options
author | Stephan Renatus <srenatus@chef.io> | 2017-06-01 10:22:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-01 10:22:02 +0200 |
commit | 717010483bdc14b22662d2a186ef6593f66b6557 (patch) | |
tree | 0d6139887f17e0a4fd25a3372f36507958316f7a | |
parent | 52fba9e71c014a179ef6a15a9c0ae6d985573e0c (diff) | |
parent | 3596c549e6fb9508f019e25c16c3c805118140b7 (diff) | |
download | chef-zero-5-stable.tar.gz |
Merge pull request #265 from chef/sr/pool-608/search-users-by-case-insenstive-email5-stable
GET /users?email=ME@MINE.COM -- compare emails ignoring case
-rw-r--r-- | lib/chef_zero/endpoints/actors_endpoint.rb | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/chef_zero/endpoints/actors_endpoint.rb b/lib/chef_zero/endpoints/actors_endpoint.rb index 1dcbe42..4a6d8c9 100644 --- a/lib/chef_zero/endpoints/actors_endpoint.rb +++ b/lib/chef_zero/endpoints/actors_endpoint.rb @@ -13,7 +13,7 @@ module ChefZero if value = request.query_params["external_authentication_uid"] response[2] = filter("external_authentication_uid", value, request, response[2]) elsif value = request.query_params["email"] - response[2] = filter("email", value, request, response[2]) + response[2] = filter("email", value, request, response[2], insensitive: true) end if request.query_params["verbose"] @@ -83,18 +83,22 @@ module ChefZero private - def filter(key, value, request, resp) + def filter(key, value, request, resp, opts = {}) results = parse_json(resp) new_results = {} results.each do |name, url| record = get_data(request, request.rest_path + [ name ], :nil) if record record = parse_json(record) - new_results[name] = url if record[key] == value + new_results[name] = url if record[key] && is_equal(record[key], value, opts[:insensitive]) end end to_json(new_results) end + + def is_equal(a, b, ignore_case) + ignore_case ? a.casecmp(b).zero? : a == b + end end end end |