cb-api 5.5.2 → 5.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -15,6 +15,12 @@ module Cb
15
15
  response cb_call(:put, criteria)
16
16
  end
17
17
 
18
+ def form(job_id)
19
+ url = Cb.configuration.uri_application_form.sub(':did', job_id)
20
+ response_hash = api_client.cb_get(url, headers: headers)
21
+ Responses::ApplicationForm.new(response_hash)
22
+ end
23
+
18
24
  private
19
25
 
20
26
  def cb_call(http_method, criteria)
@@ -6,7 +6,7 @@ module Cb
6
6
  :uri_education_code, :uri_employee_types,
7
7
  :uri_recommendation_for_job, :uri_recommendation_for_user,
8
8
  :uri_recommendation_for_company,
9
- :uri_application, :uri_application_submit,
9
+ :uri_application, :uri_application_submit, :uri_application_form,
10
10
  :uri_application_external,
11
11
  :uri_application_registered, :uri_user_change_password, :uri_user_temp_password,
12
12
  :uri_user_delete, :uri_user_retrieve, :uri_user_check_existing,
@@ -40,6 +40,7 @@ module Cb
40
40
  @uri_application_submit ||= '/v1/Application/submit'
41
41
  @uri_application_registered ||= '/v3/application/registered'
42
42
  @uri_application_external ||= '/v1/application/external'
43
+ @uri_application_form ||= '/cbapi/job/:did/applicationform'
43
44
  @uri_user_change_password ||= '/v2/User/ChangePW'
44
45
  @uri_user_delete ||= '/v2/User/delete'
45
46
  @uri_user_retrieve ||= '/v2/user/retrieve'
@@ -0,0 +1,104 @@
1
+ module Cb
2
+ module Models
3
+ class Application
4
+
5
+ class Form < ApiResponseModel
6
+ attr_reader :job_did, :job_title, :is_shared_apply, :question_list, :requirements,
7
+ :degree_required, :travel_required, :experience_required, :external_application,
8
+ :total_questions, :total_required_questions
9
+
10
+ protected
11
+
12
+ def required_fields
13
+ %w(
14
+ JobDID JobTitle IsSharedApply QuestionList Requirements DegreeRequired TravelRequired
15
+ ExperienceRequired ExternalApplication TotalQuestions TotalRequiredQuestions
16
+ )
17
+ end
18
+
19
+ def set_model_properties
20
+ @job_did = api_response['JobDID']
21
+ @job_title = api_response['JobTitle']
22
+ @is_shared_apply = api_response['IsSharedApply']
23
+ @requirements = api_response['Requirements']
24
+ @degree_required = api_response['DegreeRequired']
25
+ @travel_required = api_response['TravelRequired']
26
+ @total_questions = api_response['TotalQuestions'].to_i
27
+ @total_required_questions = api_response['TotalRequiredQuestions'].to_i
28
+ @experience_required = api_response['ExperienceRequired']
29
+ @external_application = api_response['ExternalApplication']
30
+ @question_list = extracted_questions
31
+ end
32
+
33
+ def extracted_questions
34
+ questions = iterable_questions? ? response_questions : Array.new
35
+ questions.map { |question_hash| Question.new(question_hash) }
36
+ end
37
+
38
+ def iterable_questions?
39
+ !response_questions.nil? && !response_questions.empty? && response_questions.respond_to?(:map)
40
+ end
41
+
42
+ def response_questions
43
+ api_response['QuestionList']
44
+ end
45
+ end
46
+
47
+ class Question < ApiResponseModel
48
+ attr_reader :expected_response_format, :is_required, :question_id, :question_text,
49
+ :question_type, :answers, :max_characters, :min_characters
50
+
51
+ protected
52
+
53
+ def required_fields
54
+ %w(ExpectedResponseFormat IsRequired QuestionID QuestionText QuestionType Answers)
55
+ end
56
+
57
+ def set_model_properties
58
+ @is_required = api_response['IsRequired']
59
+ @question_id = api_response['QuestionID']
60
+ @question_text = api_response['QuestionText']
61
+ @question_type = api_response['QuestionType']
62
+ @answers = extracted_answers
63
+ @min_characters = extracted_int_or_nil('minCharacters')
64
+ @max_characters = extracted_int_or_nil('maxCharacters')
65
+ @expected_response_format = api_response['ExpectedResponseFormat']
66
+ end
67
+
68
+ def extracted_answers
69
+ answers = iterable_answers? ? response_answers : Array.new
70
+ answers.map { |answer_hash| Answer.new(answer_hash) }
71
+ end
72
+
73
+ def iterable_answers?
74
+ !response_answers.nil? && !response_answers.empty? && response_answers.respond_to?(:map)
75
+ end
76
+
77
+ def response_answers
78
+ api_response['Answers']
79
+ end
80
+
81
+ def extracted_int_or_nil(key)
82
+ api_response.has_key?(key) ? api_response[key].to_i : nil
83
+ end
84
+ end
85
+
86
+ class Answer < ApiResponseModel
87
+ attr_reader :answer_id, :answer_text, :question_id
88
+
89
+ protected
90
+
91
+ def required_fields
92
+ %w(AnswerID AnswerText QuestionID)
93
+ end
94
+
95
+ def set_model_properties
96
+ @answer_id = api_response['AnswerID']
97
+ @answer_text = api_response['AnswerText']
98
+ @question_id = api_response['QuestionID']
99
+ end
100
+ end
101
+
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,23 @@
1
+ require 'cb/responses/api_response'
2
+
3
+ module Cb
4
+ module Responses
5
+ class ApplicationForm < ApiResponse
6
+
7
+ protected
8
+
9
+ def hash_containing_metadata
10
+ response
11
+ end
12
+
13
+ def validate_api_hash
14
+ required_response_field('Results', response)
15
+ end
16
+
17
+ def extract_models
18
+ response['Results'].map { |app_form_data| Cb::Models::Application::Form.new(app_form_data) }
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module Cb
2
- VERSION = '5.5.2'
2
+ VERSION = '5.6.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cb-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.2
4
+ version: 5.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-24 00:00:00.000000000 Z
12
+ date: 2014-03-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -215,6 +215,7 @@ files:
215
215
  - lib/cb/responses/metadata.rb
216
216
  - lib/cb/responses/job/singular.rb
217
217
  - lib/cb/responses/job/search.rb
218
+ - lib/cb/responses/application/application_form.rb
218
219
  - lib/cb/responses/spot/retrieve_response.rb
219
220
  - lib/cb/responses/api_response.rb
220
221
  - lib/cb/responses/user/check_existing.rb
@@ -231,6 +232,7 @@ files:
231
232
  - lib/cb/models/implementations/job_branding.rb
232
233
  - lib/cb/models/implementations/application.rb
233
234
  - lib/cb/models/implementations/application/resume.rb
235
+ - lib/cb/models/implementations/application/form.rb
234
236
  - lib/cb/models/implementations/application/cover_letter.rb
235
237
  - lib/cb/models/implementations/application/response.rb
236
238
  - lib/cb/models/implementations/job.rb