cb-api 22.4.0 → 22.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 99629dc781ee505fc6ec3f8ba0a4d525c136ccf9
4
- data.tar.gz: be4a2c3689438298268a40b484b986d042e7431d
3
+ metadata.gz: c388320407546f44682f60598e856282ac2a8a48
4
+ data.tar.gz: 9d8e84236801abe54a931403235020a78a702aa8
5
5
  SHA512:
6
- metadata.gz: ea98db5cb9afcfc405d39ff66ccda63ceec7b9a030c7ad7aafc769b10d370358b397deea430c6448485124688219c19c94eb90965a62cde57334779ec001e917
7
- data.tar.gz: 0c4cecd0b35f04985e2e2c26436da9fecb6d752c59a300e066d6b227c96e5ecda7b3d6595fa0cf4dbd2977224a72b9fa12a6b1d742d1a87160477f9eb3178694
6
+ metadata.gz: d4b5d38c5bccbe8ffc3fc55542b59ad2e7e19b930b368c9f4a496652f6d94899cb1eb394312d92ac793bcdde2ca773d87d093be6ccd65b1c55d3b135f1805fc7
7
+ data.tar.gz: 2a7b46d8a2c1a361b3b260493e749828e4f9c5841e55935b9af9aae203a283ec78db9f274edbc89f1a03fa64ac2061b6ff4359d1ad7638ce74ea5946b50c304d
@@ -2,8 +2,9 @@ Version History
2
2
  ====
3
3
  * All Version bumps are required to update this file as well!!
4
4
  ----
5
+ * 22.5.0 Add clients side-by-side existing requests.
5
6
  * 22.4.0 Add optional resume POST param: entry_path
6
- * 22.3.2 Add is_dynamic_screener to application form API
7
+ * 22.3.2 Add is_dynamic_screener to application form API
7
8
  * 22.3.1 Return an empty array for NoMethodError on recs.
8
9
  * 22.3.0 Update validator to handle errors node being nested in the response.
9
10
  * 22.2.1 Add error checking and raising back on Job call
@@ -0,0 +1,67 @@
1
+ # Copyright 2017 CareerBuilder, LLC
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and limitations under the License.
11
+ require_relative 'base'
12
+ module Cb
13
+ module Clients
14
+ class EmailSubscriptions < Base
15
+ class << self
16
+ def get(args = {})
17
+ cb_client.cb_get(Cb.configuration.uri_subscription_retrieve, query: query(args), headers: headers(args))
18
+ end
19
+
20
+ def post(args = {})
21
+ @unsubscribe_all = args[:unsubscribe_all]
22
+ cb_client.cb_post(Cb.configuration.uri_subscription_modify, body: body(args), headers: post_headers(args))
23
+ end
24
+
25
+ private
26
+
27
+ def query(args = {})
28
+ {
29
+ ExternalID: args[:external_id],
30
+ HostSite: args[:host_site] || Cb.configuration.host_site
31
+ }
32
+ end
33
+
34
+ def post_headers(args = {})
35
+ headers(args).merge('Content-Type' => 'application/xml')
36
+ end
37
+
38
+ def body(args = {})
39
+ <<-eos.gsub /^\s+/, ""
40
+ <Request>
41
+ <DeveloperKey>#{Cb.configuration.dev_key}</DeveloperKey>
42
+ <ExternalID>#{args[:external_id]}</ExternalID>
43
+ <Hostsite>#{args[:host_site] || Cb.configuration.host_site}</Hostsite>
44
+ <CareerResources>#{validate args[:career_resources]}</CareerResources>
45
+ <ProductSponsorInfo>#{validate args[:product_sponsor_info]}</ProductSponsorInfo>
46
+ <ApplicantSurveyInvites>#{validate args[:applicant_survey_invites]}</ApplicantSurveyInvites>
47
+ <JobRecs>#{validate args[:job_recs]}</JobRecs>
48
+ <DJR>#{validate args[:djr]}</DJR>
49
+ <ResumeViewed>#{validate args[:resume_viewed]}</ResumeViewed>
50
+ <ApplicationViewed>#{validate args[:application_viewed]}</ApplicationViewed>
51
+ <UnsubscribeAll>#{args[:unsubscribe_all]}</UnsubscribeAll>
52
+ </Request>
53
+ eos
54
+ end
55
+
56
+ def validate(value)
57
+ return value unless unsubscribe_all?
58
+ false.to_s
59
+ end
60
+
61
+ def unsubscribe_all?
62
+ @unsubscribe_all
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -13,19 +13,35 @@ module Cb
13
13
  module Clients
14
14
  class Job < Base
15
15
  class << self
16
- def get(args={})
16
+ def get(args = {})
17
17
  response = cb_client.cb_get(Cb.configuration.uri_job_find, query: args)
18
18
  not_found_check(response)
19
19
  response
20
20
  end
21
-
21
+
22
+ def report(args = {})
23
+ cb_client.cb_post(Cb.configuration.uri_report_job, body: report_body(args))
24
+ end
25
+
22
26
  private
23
-
27
+
24
28
  def not_found_check(response)
25
29
  return if response.nil?
26
30
  errors = Cb::Responses::Errors.new(response['ResponseJob'], false).parsed.join
27
31
  raise Cb::DocumentNotFoundError, errors if errors.downcase.include? 'job was not found'
28
32
  end
33
+
34
+ def report_body(args = {})
35
+ <<-eos.gsub /^\s+/, ""
36
+ <Request>
37
+ <DeveloperKey>#{Cb.configuration.dev_key}</DeveloperKey>
38
+ <JobDID>#{args[:job_id]}</JobDID>
39
+ <UserID>#{args[:user_id]}</UserID>
40
+ <ReportType>#{args[:report_type]}</ReportType>
41
+ <Comments>#{args[:comments]}</Comments>
42
+ </Request>
43
+ eos
44
+ end
29
45
  end
30
46
  end
31
47
  end
@@ -0,0 +1,37 @@
1
+ # Copyright 2017 CareerBuilder, LLC
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and limitations under the License.
11
+ require_relative 'base'
12
+ module Cb
13
+ module Clients
14
+ class JobSearch < Base
15
+ class << self
16
+ def get(args = {})
17
+ cb_client.cb_get(Cb.configuration.uri_job_search, query: query(args), headers: headers(args))
18
+ end
19
+
20
+ private
21
+
22
+ def headers(args = {})
23
+ {
24
+ 'Accept' => 'application/json;version=3.0',
25
+ 'Authorization' => "Bearer #{ args[:oauth_token] }",
26
+ 'Content-Type' => 'application/json',
27
+ 'HostSite' => args[:host_site] || args[:HostSite] || Cb.configuration.host_site
28
+ }
29
+ end
30
+
31
+ def query(args = {})
32
+ args.reject { |k, _| k == :oauth_token }
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -12,10 +12,131 @@ require_relative 'base'
12
12
  module Cb
13
13
  module Clients
14
14
  class Resumes < Base
15
- def self.get(args={})
16
- uri = Cb.configuration.uri_resumes
17
- query_params = args[:site] ? { site: args[:site] } : { }
18
- cb_client.cb_get(uri, headers: headers(args), query: query_params)
15
+ class << self
16
+ def get(args = {})
17
+ uri = Cb.configuration.uri_resumes
18
+ query_params = args[:site] ? { site: args[:site] } : {}
19
+ cb_client.cb_get(uri, headers: headers(args), query: query_params)
20
+ end
21
+
22
+ def post(args = {})
23
+ cb_client.cb_post(Cb.configuration.uri_resume_post, body: post_body(args), headers: headers(args))
24
+ end
25
+
26
+ def delete(args = {})
27
+ cb_client.cb_delete(Cb.configuration.uri_resume_delete.sub(':resume_hash', args[:resume_hash].to_s), query: { externalUserId: args[:external_user_id] }, headers: headers(args))
28
+ end
29
+
30
+ def put(args = {})
31
+ cb_client.cb_put(Cb.configuration.uri_resume_put.gsub(':resume_hash', args[:resume_hash].to_s), headers: headers(args), body: put_body(args))
32
+ end
33
+
34
+ private
35
+
36
+ def post_body(args = {})
37
+ {
38
+ desiredJobTitle: args[:desired_job_title],
39
+ privacySetting: args[:privacy_setting],
40
+ resumeFileData: args[:resume_file_data],
41
+ resumeFileName: args[:resume_file_name],
42
+ hostSite: args[:host_site],
43
+ entryPath: args[:entry_path]
44
+ }.to_json
45
+ end
46
+
47
+ def headers(args = {})
48
+ {
49
+ 'HostSite' => args[:host_site] || Cb.configuration.host_site,
50
+ 'Content-Type' => 'application/json;version=1.0',
51
+ 'Authorization' => "Bearer #{ args[:oauth_token] }"
52
+ }
53
+ end
54
+
55
+ def put_body(args = {})
56
+ {
57
+ userIdentifier: args[:user_identifier],
58
+ resumeHash: args[:resume_hash],
59
+ desiredJobTitle: args[:desired_job_title],
60
+ privacySetting: args[:privacy_setting],
61
+ workExperience: extract_work_experience(args),
62
+ salaryInformation: extract_salary_information(args),
63
+ educations: extract_educations(args),
64
+ skillsAndQualifications: extract_skills_and_qualifications(args),
65
+ relocations: extract_relocations(args),
66
+ governmentAndMilitary: extract_government_and_military(args)
67
+ }.to_json
68
+ end
69
+
70
+ def extract_work_experience(args = {})
71
+ return [] if args[:work_experience].blank?
72
+ args[:work_experience].map do |experience|
73
+ {
74
+ jobTitle: experience[:job_title],
75
+ companyName: experience[:company_name],
76
+ employmentType: experience[:employment_type],
77
+ startDate: experience[:start_date],
78
+ endDate: experience[:end_date],
79
+ currentlyEmployedHere: experience[:currently_employed_here],
80
+ id: experience[:id]
81
+ }
82
+ end
83
+ end
84
+
85
+ def extract_salary_information(args = {})
86
+ salary = args[:salary_information]
87
+ return {} if salary.blank?
88
+ {
89
+ mostRecentPayAmount: salary[:most_recent_pay_amount],
90
+ perHourOrPerYear: salary[:per_hour_or_per_year],
91
+ currencyCode: salary[:currency_code],
92
+ workExperienceId: salary[:work_experience_id],
93
+ annualBonus: salary[:annual_bonus],
94
+ annualCommission: salary[:annual_commission]
95
+ }
96
+ end
97
+
98
+ def extract_educations(args = {})
99
+ return [] if args[:educations].blank?
100
+ args[:educations].map do |education|
101
+ {
102
+ schoolName: education[:school_name],
103
+ majorOrProgram: education[:major_or_program],
104
+ degree: education[:degree],
105
+ graduationDate: education[:graduation_date]
106
+ }
107
+ end
108
+ end
109
+
110
+ def extract_skills_and_qualifications(args = {})
111
+ skills = args[:skills_and_qualifications]
112
+ return {} if skills.blank?
113
+ {
114
+ accreditationsAndCertifications: skills[:accreditations_and_certifications],
115
+ languagesSpoken: skills[:languages_spoken],
116
+ hasManagementExperience: skills[:has_management_experience],
117
+ sizeOfTeamManaged: skills[:size_of_team_managed]
118
+ }
119
+ end
120
+
121
+ def extract_relocations(args = {})
122
+ return [] unless args[:relocations]
123
+ args[:relocations].map do |relocate|
124
+ {
125
+ city: relocate[:city],
126
+ adminArea: relocate[:admin_area],
127
+ countryCode: relocate[:country_code]
128
+ }
129
+ end
130
+ end
131
+
132
+ def extract_government_and_military(args = {})
133
+ government = args[:government_and_military]
134
+ return {} if government.blank?
135
+ {
136
+ hasSecurityClearance: government[:has_security_clearance],
137
+ militaryExperience: government[:military_experience]
138
+ }
139
+ end
19
140
  end
20
141
  end
21
142
  end
@@ -9,5 +9,5 @@
9
9
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
10
  # See the License for the specific language governing permissions and limitations under the License.
11
11
  module Cb
12
- VERSION = '22.4.0'
12
+ VERSION = '22.5.0'
13
13
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cb-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 22.4.0
4
+ version: 22.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The CareerBuilder.com Niche and Consumer Development teams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-23 00:00:00.000000000 Z
11
+ date: 2017-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -218,10 +218,12 @@ files:
218
218
  - lib/cb/clients/company.rb
219
219
  - lib/cb/clients/cover_letters.rb
220
220
  - lib/cb/clients/data_list.rb
221
+ - lib/cb/clients/email_subscriptions.rb
221
222
  - lib/cb/clients/expired_job.rb
222
223
  - lib/cb/clients/job.rb
223
224
  - lib/cb/clients/job_branding.rb
224
225
  - lib/cb/clients/job_insights.rb
226
+ - lib/cb/clients/job_search.rb
225
227
  - lib/cb/clients/recommendation.rb
226
228
  - lib/cb/clients/recommendations.rb
227
229
  - lib/cb/clients/resume_insights.rb