cb-api 22.4.0 → 22.5.0

Sign up to get free protection for your applications and to get access to all the features.
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