From febe6aa40d1ad5a2456cb347d6acec81a08b17fd Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Thu, 6 Aug 2020 16:43:56 -0400 Subject: [PATCH 01/11] Create candidate request --- lib/greenhouse_io/api/client.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index 453d52d..bf23d33 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -28,6 +28,10 @@ def candidates(id = nil, options = {}) get_from_harvest_api "/candidates#{path_id(id)}", options end + def candidate(id=nil, options={}) + get_from_harvest_api "/candidates#{path_id(id)}", options + end + def activity_feed(id, options = {}) get_from_harvest_api "/candidates/#{id}/activity_feed", options end @@ -96,7 +100,7 @@ def permitted_options(options) def get_from_harvest_api(url, options = {}) response = get_response(url, { - :query => permitted_options(options), + :query => permitted_options(options), :basic_auth => basic_auth }) From 38218f74175d8b1c87c4e8096cbdecf2f4957fb0 Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Fri, 7 Aug 2020 11:26:28 -0400 Subject: [PATCH 02/11] This was just a duplicate :facepalm: --- lib/greenhouse_io/api/client.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index bf23d33..f07f005 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -28,10 +28,6 @@ def candidates(id = nil, options = {}) get_from_harvest_api "/candidates#{path_id(id)}", options end - def candidate(id=nil, options={}) - get_from_harvest_api "/candidates#{path_id(id)}", options - end - def activity_feed(id, options = {}) get_from_harvest_api "/candidates/#{id}/activity_feed", options end From 52e7af9124860cea4edd26cd4a6b32ba1116e2b2 Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Fri, 7 Aug 2020 12:25:46 -0400 Subject: [PATCH 03/11] Add create candidate method --- lib/greenhouse_io/api/client.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index f07f005..55cbd17 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -32,6 +32,13 @@ def activity_feed(id, options = {}) get_from_harvest_api "/candidates/#{id}/activity_feed", options end + def create_candidate(candidate_hash, on_behalf_of) + post_harvest_api \ + "/candidates", + candidate_hash, + { 'On-Behalf-Of' => on_behalf_of.to_s } + end + def create_candidate_note(candidate_id, note_hash, on_behalf_of) post_to_harvest_api( "/candidates/#{candidate_id}/activity_feed/notes", From fa1e3e3a42dec9c77b395b642ed0d8ba11ce517a Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Fri, 7 Aug 2020 12:28:14 -0400 Subject: [PATCH 04/11] Fix method name --- lib/greenhouse_io/api/client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index 55cbd17..8b23e53 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -33,7 +33,7 @@ def activity_feed(id, options = {}) end def create_candidate(candidate_hash, on_behalf_of) - post_harvest_api \ + post_to_harvest_api \ "/candidates", candidate_hash, { 'On-Behalf-Of' => on_behalf_of.to_s } From c10ad11e080079ac60967a069217ae987db12d73 Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Fri, 7 Aug 2020 12:51:41 -0400 Subject: [PATCH 05/11] Add delete methods --- lib/greenhouse_io/api.rb | 4 ++++ lib/greenhouse_io/api/client.rb | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/lib/greenhouse_io/api.rb b/lib/greenhouse_io/api.rb index ec521de..2e53783 100644 --- a/lib/greenhouse_io/api.rb +++ b/lib/greenhouse_io/api.rb @@ -8,6 +8,10 @@ def post_response(url, options) self.class.post(url, options) end + def delete_response(url, options) + self.class.delete(url, options) + end + def parse_json(response) JSON.parse(response.body, symbolize_names: GreenhouseIo.configuration.symbolize_keys) end diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index 8b23e53..8621404 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -132,6 +132,22 @@ def post_to_harvest_api(url, body, headers) end end + def delete_with_harvest_api(url, body, headers) + response = delete_response(url, { + :body => JSON.dump(body), + :basic_auth => basic_auth, + :headers => headers + }) + + set_headers_info(response.headers) + + if response.code == 200 + parse_json(response) + else + raise GreenhouseIo::Error.new(response.code) + end + end + def set_headers_info(headers) self.rate_limit = headers['x-ratelimit-limit'].to_i self.rate_limit_remaining = headers['x-ratelimit-remaining'].to_i From ac7b69ff5206d6d1fcfa265bc92f4854bf3df7bd Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Fri, 7 Aug 2020 12:52:44 -0400 Subject: [PATCH 06/11] Add delete candidate method --- lib/greenhouse_io/api/client.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index 8621404..3a8c9d1 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -39,6 +39,12 @@ def create_candidate(candidate_hash, on_behalf_of) { 'On-Behalf-Of' => on_behalf_of.to_s } end + def delete_candidate(candidate_id, on_behalf_of) + delete_with_harvest_api \ + "/candidates/#{id}", + { 'On-Behalf-Of' => on_behalf_of.to_s } + end + def create_candidate_note(candidate_id, note_hash, on_behalf_of) post_to_harvest_api( "/candidates/#{candidate_id}/activity_feed/notes", From 7dd3a93657c144cfc812a8436b1fa9b8ecf8c18e Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Fri, 7 Aug 2020 12:55:16 -0400 Subject: [PATCH 07/11] Fix method param --- lib/greenhouse_io/api/client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index 3a8c9d1..8a0b3e3 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -41,7 +41,7 @@ def create_candidate(candidate_hash, on_behalf_of) def delete_candidate(candidate_id, on_behalf_of) delete_with_harvest_api \ - "/candidates/#{id}", + "/candidates/#{candidate_id}", { 'On-Behalf-Of' => on_behalf_of.to_s } end From e31a74bf811811ad6f09849b8f9dd1ab0a8a6f72 Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Fri, 7 Aug 2020 17:04:53 -0400 Subject: [PATCH 08/11] Remove unneeded param --- lib/greenhouse_io/api/client.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index 8a0b3e3..484012a 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -138,9 +138,8 @@ def post_to_harvest_api(url, body, headers) end end - def delete_with_harvest_api(url, body, headers) + def delete_with_harvest_api(url, headers) response = delete_response(url, { - :body => JSON.dump(body), :basic_auth => basic_auth, :headers => headers }) From 3b094b41cebd766f90a6d8d76fb38d1694639539 Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Fri, 7 Aug 2020 19:41:02 -0400 Subject: [PATCH 09/11] Allow 201 response --- lib/greenhouse_io/api/client.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index 484012a..5cdfdb4 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -133,6 +133,8 @@ def post_to_harvest_api(url, body, headers) if response.code == 200 parse_json(response) + elsif response.code == 201 + parse_json(response) else raise GreenhouseIo::Error.new(response.code) end From 45af5182d0d74b5c26d803dc2e9f1d570f0b81e6 Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Tue, 11 Aug 2020 19:35:26 -0400 Subject: [PATCH 10/11] Log error response body instead of just code --- lib/greenhouse_io/api/client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index 5cdfdb4..a3ee26c 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -136,7 +136,7 @@ def post_to_harvest_api(url, body, headers) elsif response.code == 201 parse_json(response) else - raise GreenhouseIo::Error.new(response.code) + raise GreenhouseIo::Error.new("Response code: #{response.code}, message: #{response.body}") end end From 95e4bbfe4d472c15eaf7edf182bb88c0368dda8c Mon Sep 17 00:00:00 2001 From: Laura Moore Date: Wed, 12 Aug 2020 12:37:59 -0400 Subject: [PATCH 11/11] Add patch method for gem, add additional logging to requests --- lib/greenhouse_io/api.rb | 4 ++++ lib/greenhouse_io/api/client.rb | 24 ++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/greenhouse_io/api.rb b/lib/greenhouse_io/api.rb index 2e53783..6aca5e1 100644 --- a/lib/greenhouse_io/api.rb +++ b/lib/greenhouse_io/api.rb @@ -8,6 +8,10 @@ def post_response(url, options) self.class.post(url, options) end + def patch_response(url, options) + self.class.patch(url, options) + end + def delete_response(url, options) self.class.delete(url, options) end diff --git a/lib/greenhouse_io/api/client.rb b/lib/greenhouse_io/api/client.rb index a3ee26c..7dd2ff0 100644 --- a/lib/greenhouse_io/api/client.rb +++ b/lib/greenhouse_io/api/client.rb @@ -118,7 +118,7 @@ def get_from_harvest_api(url, options = {}) if response.code == 200 parse_json(response) else - raise GreenhouseIo::Error.new(response.code) + raise GreenhouseIo::Error.new("Response code: #{response.code}, message: #{response.body}") end end @@ -140,6 +140,24 @@ def post_to_harvest_api(url, body, headers) end end + def patch_with_harvest_api(url, body, headers) + response = patch_response(url, { + :body => JSON.dump(body), + :basic_auth => basic_auth, + :headers => headers + }) + + set_headers_info(response.headers) + + if response.code == 200 + parse_json(response) + elsif response.code == 201 + parse_json(response) + else + raise GreenhouseIo::Error.new("Response code: #{response.code}, message: #{response.body}") + end + end + def delete_with_harvest_api(url, headers) response = delete_response(url, { :basic_auth => basic_auth, @@ -150,8 +168,10 @@ def delete_with_harvest_api(url, headers) if response.code == 200 parse_json(response) + elsif response.code == 201 + parse_json(response) else - raise GreenhouseIo::Error.new(response.code) + raise GreenhouseIo::Error.new("Response code: #{response.code}, message: #{response.body}") end end