cb-api 17.4.0 → 18.0.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.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -0
  3. data/CONTRIBUTING.md +18 -0
  4. data/LICENSE +202 -0
  5. data/README.md +3 -1
  6. data/lib/cb.rb +12 -2
  7. data/lib/cb/client.rb +10 -0
  8. data/lib/cb/clients/anon_saved_search.rb +12 -4
  9. data/lib/cb/clients/application.rb +10 -2
  10. data/lib/cb/clients/application_external.rb +13 -5
  11. data/lib/cb/clients/category.rb +16 -8
  12. data/lib/cb/clients/company.rb +16 -8
  13. data/lib/cb/clients/education.rb +17 -9
  14. data/lib/cb/clients/employee_types.rb +11 -3
  15. data/lib/cb/clients/industry.rb +12 -3
  16. data/lib/cb/clients/job.rb +10 -2
  17. data/lib/cb/clients/job_branding.rb +13 -5
  18. data/lib/cb/clients/recommendation.rb +27 -18
  19. data/lib/cb/clients/saved_search.rb +21 -15
  20. data/lib/cb/clients/talent_network.rb +20 -12
  21. data/lib/cb/clients/user.rb +22 -14
  22. data/lib/cb/config.rb +64 -54
  23. data/lib/cb/convenience.rb +22 -13
  24. data/lib/cb/criteria/application/cover_letter.rb +10 -0
  25. data/lib/cb/criteria/application/create.rb +11 -1
  26. data/lib/cb/criteria/application/get.rb +10 -0
  27. data/lib/cb/criteria/application/response.rb +10 -0
  28. data/lib/cb/criteria/application/resume.rb +10 -0
  29. data/lib/cb/criteria/application/update.rb +10 -0
  30. data/lib/cb/criteria/job/details.rb +11 -1
  31. data/lib/cb/criteria/resumes/get_by_hash.rb +12 -2
  32. data/lib/cb/criteria/user/change_password.rb +21 -11
  33. data/lib/cb/criteria/user/delete.rb +18 -11
  34. data/lib/cb/exceptions.rb +14 -4
  35. data/lib/cb/models/api_call_model.rb +10 -1
  36. data/lib/cb/models/api_response_model.rb +15 -7
  37. data/lib/cb/models/implementations/application.rb +10 -1
  38. data/lib/cb/models/implementations/application/cover_letter.rb +10 -1
  39. data/lib/cb/models/implementations/application/form.rb +13 -5
  40. data/lib/cb/models/implementations/application/response.rb +10 -1
  41. data/lib/cb/models/implementations/application/resume.rb +10 -1
  42. data/lib/cb/models/implementations/application_external.rb +12 -3
  43. data/lib/cb/models/implementations/branding/media.rb +10 -2
  44. data/lib/cb/models/implementations/branding/section.rb +10 -2
  45. data/lib/cb/models/implementations/branding/style.rb +10 -2
  46. data/lib/cb/models/implementations/branding/styles/base.rb +12 -4
  47. data/lib/cb/models/implementations/branding/styles/buttons.rb +10 -2
  48. data/lib/cb/models/implementations/branding/styles/company_info.rb +11 -3
  49. data/lib/cb/models/implementations/branding/styles/container.rb +11 -3
  50. data/lib/cb/models/implementations/branding/styles/content.rb +10 -2
  51. data/lib/cb/models/implementations/branding/styles/css_adapter.rb +10 -2
  52. data/lib/cb/models/implementations/branding/styles/headings.rb +10 -2
  53. data/lib/cb/models/implementations/branding/styles/job_details.rb +10 -2
  54. data/lib/cb/models/implementations/branding/styles/page.rb +10 -2
  55. data/lib/cb/models/implementations/branding/widget.rb +10 -2
  56. data/lib/cb/models/implementations/category.rb +17 -7
  57. data/lib/cb/models/implementations/collapsed_job_results.rb +10 -1
  58. data/lib/cb/models/implementations/collapsed_jobs.rb +10 -0
  59. data/lib/cb/models/implementations/company.rb +17 -10
  60. data/lib/cb/models/implementations/data_lists/resume_data_list.rb +11 -1
  61. data/lib/cb/models/implementations/education.rb +10 -0
  62. data/lib/cb/models/implementations/email_subscription.rb +10 -0
  63. data/lib/cb/models/implementations/employee_type.rb +14 -4
  64. data/lib/cb/models/implementations/industry.rb +14 -6
  65. data/lib/cb/models/implementations/job.rb +24 -20
  66. data/lib/cb/models/implementations/job_branding.rb +13 -5
  67. data/lib/cb/models/implementations/job_results.rb +10 -2
  68. data/lib/cb/models/implementations/job_results_v3.rb +11 -1
  69. data/lib/cb/models/implementations/recommended_job.rb +10 -0
  70. data/lib/cb/models/implementations/resume.rb +11 -1
  71. data/lib/cb/models/implementations/resume_document.rb +10 -0
  72. data/lib/cb/models/implementations/resume_listing.rb +11 -1
  73. data/lib/cb/models/implementations/resumes/country_code.rb +10 -0
  74. data/lib/cb/models/implementations/resumes/education.rb +11 -1
  75. data/lib/cb/models/implementations/resumes/government_and_military.rb +11 -1
  76. data/lib/cb/models/implementations/resumes/language_code.rb +12 -2
  77. data/lib/cb/models/implementations/resumes/relocation.rb +11 -1
  78. data/lib/cb/models/implementations/resumes/salary_information.rb +11 -2
  79. data/lib/cb/models/implementations/resumes/skills_and_qualifications.rb +10 -0
  80. data/lib/cb/models/implementations/resumes/work_experience.rb +11 -1
  81. data/lib/cb/models/implementations/saved_search.rb +83 -73
  82. data/lib/cb/models/implementations/state.rb +11 -2
  83. data/lib/cb/models/implementations/talent_network.rb +44 -36
  84. data/lib/cb/models/implementations/user.rb +12 -2
  85. data/lib/cb/models/implementations/work_status.rb +12 -3
  86. data/lib/cb/requests/anonymous_saved_search/create.rb +10 -2
  87. data/lib/cb/requests/anonymous_saved_search/delete.rb +10 -2
  88. data/lib/cb/requests/application/create.rb +10 -1
  89. data/lib/cb/requests/application/form.rb +10 -2
  90. data/lib/cb/requests/application/get.rb +10 -1
  91. data/lib/cb/requests/application/update.rb +10 -1
  92. data/lib/cb/requests/application/utils.rb +10 -1
  93. data/lib/cb/requests/application_external/submit_application.rb +10 -2
  94. data/lib/cb/requests/base.rb +13 -5
  95. data/lib/cb/requests/category/search.rb +10 -2
  96. data/lib/cb/requests/company/find.rb +12 -4
  97. data/lib/cb/requests/data_lists/countries.rb +10 -0
  98. data/lib/cb/requests/data_lists/data_list_base.rb +11 -1
  99. data/lib/cb/requests/data_lists/desired_job_type.rb +10 -0
  100. data/lib/cb/requests/data_lists/education_codes.rb +10 -0
  101. data/lib/cb/requests/data_lists/languages.rb +10 -0
  102. data/lib/cb/requests/data_lists/state.rb +12 -2
  103. data/lib/cb/requests/education/get.rb +10 -2
  104. data/lib/cb/requests/email_subscription/modify.rb +13 -5
  105. data/lib/cb/requests/email_subscription/retrieve.rb +10 -2
  106. data/lib/cb/requests/job_search/get.rb +12 -3
  107. data/lib/cb/requests/recommendations/resume_recs.rb +12 -4
  108. data/lib/cb/requests/resumes/delete.rb +10 -0
  109. data/lib/cb/requests/resumes/get.rb +10 -0
  110. data/lib/cb/requests/resumes/language_codes.rb +12 -2
  111. data/lib/cb/requests/resumes/list.rb +12 -2
  112. data/lib/cb/requests/resumes/post.rb +11 -1
  113. data/lib/cb/requests/resumes/put.rb +11 -3
  114. data/lib/cb/requests/user/change_password.rb +10 -2
  115. data/lib/cb/requests/user/check_existing.rb +10 -2
  116. data/lib/cb/requests/user/delete.rb +10 -2
  117. data/lib/cb/requests/user/retrieve.rb +10 -2
  118. data/lib/cb/requests/user/temporary_password.rb +11 -3
  119. data/lib/cb/requests/work_status/list.rb +10 -2
  120. data/lib/cb/responses/Recommendation/recommendations.rb +10 -1
  121. data/lib/cb/responses/anonymous_saved_search/create.rb +10 -2
  122. data/lib/cb/responses/anonymous_saved_search/delete.rb +10 -2
  123. data/lib/cb/responses/api_response.rb +19 -9
  124. data/lib/cb/responses/application.rb +10 -2
  125. data/lib/cb/responses/application/application_form.rb +10 -2
  126. data/lib/cb/responses/application_external/submit_application.rb +11 -2
  127. data/lib/cb/responses/category/search.rb +13 -4
  128. data/lib/cb/responses/company/find.rb +12 -3
  129. data/lib/cb/responses/data_list/state.rb +10 -1
  130. data/lib/cb/responses/data_lists/resume_data_list.rb +10 -1
  131. data/lib/cb/responses/education/get.rb +13 -4
  132. data/lib/cb/responses/email_subscription/response.rb +11 -2
  133. data/lib/cb/responses/employee_types/search.rb +10 -3
  134. data/lib/cb/responses/errors.rb +14 -5
  135. data/lib/cb/responses/industry/search.rb +11 -4
  136. data/lib/cb/responses/job/search.rb +10 -1
  137. data/lib/cb/responses/job/search_v3.rb +10 -1
  138. data/lib/cb/responses/job/singular.rb +13 -4
  139. data/lib/cb/responses/metadata.rb +11 -2
  140. data/lib/cb/responses/resumes/language_codes.rb +11 -0
  141. data/lib/cb/responses/resumes/resume.rb +10 -1
  142. data/lib/cb/responses/resumes/resume_document.rb +10 -0
  143. data/lib/cb/responses/resumes/resume_list.rb +10 -0
  144. data/lib/cb/responses/saved_search/delete.rb +11 -3
  145. data/lib/cb/responses/saved_search/list.rb +10 -2
  146. data/lib/cb/responses/saved_search/retrieve.rb +10 -2
  147. data/lib/cb/responses/saved_search/singular.rb +10 -2
  148. data/lib/cb/responses/saved_search/update.rb +11 -3
  149. data/lib/cb/responses/timing.rb +15 -6
  150. data/lib/cb/responses/user/change_password.rb +12 -4
  151. data/lib/cb/responses/user/check_existing.rb +11 -3
  152. data/lib/cb/responses/user/delete.rb +11 -3
  153. data/lib/cb/responses/user/retrieve.rb +10 -3
  154. data/lib/cb/responses/user/temporary_password.rb +10 -3
  155. data/lib/cb/responses/work_status/list.rb +12 -4
  156. data/lib/cb/utils/api.rb +22 -12
  157. data/lib/cb/utils/console_observer.rb +11 -2
  158. data/lib/cb/utils/country.rb +14 -4
  159. data/lib/cb/utils/fluid_attributes.rb +11 -4
  160. data/lib/cb/utils/meta_values.rb +10 -0
  161. data/lib/cb/utils/response_array_extractor.rb +14 -6
  162. data/lib/cb/utils/response_map.rb +12 -3
  163. data/lib/cb/utils/validator.rb +21 -19
  164. data/lib/cb/version.rb +11 -1
  165. data/lib/tasks/cb.rake +11 -1
  166. data/lib/tasks/doc.rake +15 -5
  167. metadata +5 -3
@@ -1,9 +1,18 @@
1
+ # Copyright 2015 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.
1
11
  module Cb
2
12
  module Responses
3
13
  module User
4
-
5
14
  class Delete < ApiResponse
6
- class Model < Struct.new(:status) ; end
15
+ class Model < Struct.new(:status); end
7
16
 
8
17
  protected
9
18
 
@@ -36,7 +45,6 @@ module Cb
36
45
  'Status'
37
46
  end
38
47
  end
39
-
40
48
  end
41
49
  end
42
50
  end
@@ -1,9 +1,17 @@
1
+ # Copyright 2015 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.
1
11
  module Cb
2
12
  module Responses
3
13
  module User
4
-
5
14
  class Retrieve < ApiResponse
6
-
7
15
  attr_reader :status
8
16
 
9
17
  def initialize(args)
@@ -48,7 +56,6 @@ module Cb
48
56
  'Status'
49
57
  end
50
58
  end
51
-
52
59
  end
53
60
  end
54
61
  end
@@ -1,9 +1,17 @@
1
+ # Copyright 2015 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.
1
11
  module Cb
2
12
  module Responses
3
13
  module User
4
-
5
14
  class TemporaryPassword < ApiResponse
6
-
7
15
  # there's really no response model here, so let's just
8
16
  # pass the new password along in a way that makes sense.
9
17
  alias_method :temp_password, :model
@@ -32,7 +40,6 @@ module Cb
32
40
  'TemporaryPassword'
33
41
  end
34
42
  end
35
-
36
43
  end
37
44
  end
38
45
  end
@@ -1,10 +1,19 @@
1
+ # Copyright 2015 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.
1
11
  require 'cb/responses/api_response'
2
12
 
3
13
  module Cb
4
14
  module Responses
5
15
  module WorkStatus
6
16
  class List < ApiResponse
7
-
8
17
  protected
9
18
 
10
19
  def hash_containing_metadata
@@ -16,19 +25,18 @@ module Cb
16
25
  end
17
26
 
18
27
  def extract_models
19
- [ model_array ].flatten.map { |work_status| Cb::Models::WorkStatus.new work_status }
28
+ [model_array].flatten.map { |work_status| Cb::Models::WorkStatus.new work_status }
20
29
  end
21
30
 
22
31
  private
23
32
 
24
33
  def work_statuses_node
25
- "WorkStatuses"
34
+ 'WorkStatuses'
26
35
  end
27
36
 
28
37
  def model_array
29
38
  response[work_statuses_node]
30
39
  end
31
-
32
40
  end
33
41
  end
34
42
  end
@@ -1,3 +1,13 @@
1
+ # Copyright 2015 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.
1
11
  require 'httparty'
2
12
  require 'observer'
3
13
 
@@ -20,31 +30,31 @@ module Cb
20
30
  end
21
31
 
22
32
  def initialize
23
- self.class.default_params :developerkey => Cb.configuration.dev_key,
24
- :outputjson => Cb.configuration.use_json.to_s
33
+ self.class.default_params developerkey: Cb.configuration.dev_key,
34
+ outputjson: Cb.configuration.use_json.to_s
25
35
 
26
36
  self.class.default_timeout Cb.configuration.time_out
27
- self.class.headers.merge! ({'developerkey' => Cb.configuration.dev_key})
28
- self.class.headers.merge! ({'accept-encoding' => 'deflate, gzip'}) unless Cb.configuration.debug_api
37
+ self.class.headers.merge! ({ 'developerkey' => Cb.configuration.dev_key })
38
+ self.class.headers.merge! ({ 'accept-encoding' => 'deflate, gzip' }) unless Cb.configuration.debug_api
29
39
  end
30
40
 
31
- def cb_get(path, options={}, &block)
41
+ def cb_get(path, options = {}, &block)
32
42
  execute_http_request(:get, nil, path, options, &block)
33
43
  end
34
44
 
35
- def cb_post(path, options={}, &block)
45
+ def cb_post(path, options = {}, &block)
36
46
  execute_http_request(:post, nil, path, options, &block)
37
47
  end
38
48
 
39
- def cb_put(path, options={}, &block)
49
+ def cb_put(path, options = {}, &block)
40
50
  execute_http_request(:put, nil, path, options, &block)
41
51
  end
42
52
 
43
- def cb_delete(path, options={}, &block)
53
+ def cb_delete(path, options = {}, &block)
44
54
  execute_http_request(:delete, nil, path, options, &block)
45
55
  end
46
56
 
47
- def execute_http_request(http_method, uri, path, options={}, &block)
57
+ def execute_http_request(http_method, uri, path, options = {}, &block)
48
58
  self.class.base_uri(uri || Cb.configuration.base_uri)
49
59
  api_caller = find_api_caller(caller)
50
60
  start_time = Time.now.to_f
@@ -84,7 +94,7 @@ module Cb
84
94
  end
85
95
 
86
96
  def self.criteria_to_hash(criteria)
87
- params = Hash.new
97
+ params = {}
88
98
  if criteria.respond_to?(:instance_variables)
89
99
  criteria.instance_variables.each do |var|
90
100
  var_name = var.to_s
@@ -137,7 +147,7 @@ module Cb
137
147
 
138
148
  def self.camelize(input)
139
149
  input.sub!(/^[a-z\d]*/) { $&.capitalize }
140
- input.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{$2.capitalize}" }.gsub('/', '::')
150
+ input.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{Regexp.last_match(2).capitalize}" }.gsub('/', '::')
141
151
  end
142
152
 
143
153
  def set_api_error(validated_response)
@@ -145,7 +155,7 @@ module Cb
145
155
  end
146
156
 
147
157
  def format_hash_key(api_hash_key)
148
- return String.new unless api_hash_key.respond_to?(:snakecase)
158
+ return '' unless api_hash_key.respond_to?(:snakecase)
149
159
  api_hash_key.snakecase
150
160
  end
151
161
  end
@@ -1,10 +1,19 @@
1
+ # Copyright 2015 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.
1
11
  module Cb
2
12
  module Utils
3
13
  class ConsoleObserver
4
14
  def update(api_call)
5
- puts "#{api_call.api_call_type.to_s} #{api_call.path}/#{api_call.options.to_s} response: #{api_call.response.to_json}"
15
+ puts "#{api_call.api_call_type} #{api_call.path}/#{api_call.options} response: #{api_call.response.to_json}"
6
16
  end
7
17
  end
8
18
  end
9
19
  end
10
-
@@ -1,11 +1,21 @@
1
+ # Copyright 2015 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.
1
11
  module Cb
2
12
  module Utils
3
13
  class Country
4
14
  # These aren't all country codes. We get it. Our naming scheme didn't hold up over time.
5
15
  def self.get_supported
6
16
  %w(AH BE CA CC CE CH CN CP CS CY DE DK E1 ER ES EU F1
7
- FR GC GR I1 IE IN IT J1 JC JS LJ M1 MY NL NO PD PI
8
- PL RM RO RX S1 SE SF SG T1 T2 UK US WH WM WR)
17
+ FR GC GR I1 IE IN IT J1 JC JS LJ M1 MY NL NO PD PI
18
+ PL RM RO RX S1 SE SF SG T1 T2 UK US WH WM WR)
9
19
  end
10
20
 
11
21
  def self.is_valid?(country)
@@ -15,7 +25,7 @@ module Cb
15
25
  def self.inject_convenience_methods
16
26
  get_supported.each do |country|
17
27
  unless self.respond_to? "#{country}"
18
- self.define_singleton_method "#{country}" do
28
+ define_singleton_method "#{country}" do
19
29
  return country
20
30
  end
21
31
  end
@@ -23,4 +33,4 @@ module Cb
23
33
  end
24
34
  end
25
35
  end
26
- end
36
+ end
@@ -1,10 +1,18 @@
1
+ # Copyright 2015 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.
1
11
  module Cb
2
12
  module Utils
3
13
  module FluidAttributes
4
-
5
14
  def fluid_attr_accessor(*names)
6
15
  names.each do |name|
7
-
8
16
  define_method :"#{name}" do |*args|
9
17
  return instance_variable_get(:"@#{name}") if args.length == 0
10
18
 
@@ -13,7 +21,7 @@ module Cb
13
21
  return self
14
22
  end
15
23
 
16
- raise ArgumentError.new("Wrong number of arguments (#{args.length} for 1)")
24
+ fail ArgumentError.new("Wrong number of arguments (#{args.length} for 1)")
17
25
  end
18
26
 
19
27
  define_method :"#{name}=" do |*args|
@@ -22,7 +30,6 @@ module Cb
22
30
  end
23
31
  end
24
32
  end
25
-
26
33
  end
27
34
  end
28
35
  end
@@ -1,3 +1,13 @@
1
+ # Copyright 2015 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.
1
11
  module Cb
2
12
  module Utils
3
13
  class MetaValues
@@ -1,15 +1,24 @@
1
+ # Copyright 2015 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.
1
11
  module Cb
2
12
  module Utils
3
13
  class ResponseArrayExtractor
4
-
5
14
  def self.extract(response_hash, key, singular_key = nil)
6
- self.new(response_hash, key, singular_key).extract
15
+ new(response_hash, key, singular_key).extract
7
16
  end
8
17
 
9
18
  def initialize(response_hash, key, singular_key)
10
19
  @response_hash = response_hash
11
20
  @key = key
12
- @singular_key = singular_key || key[0..key.length-2]
21
+ @singular_key = singular_key || key[0..key.length - 2]
13
22
  end
14
23
 
15
24
  def extract
@@ -40,10 +49,9 @@ module Cb
40
49
  if @response_hash[@key][@singular_key].is_a?(Array)
41
50
  @response_hash[@key][@singular_key]
42
51
  else
43
- [ @response_hash[@key][@singular_key] ]
52
+ [@response_hash[@key][@singular_key]]
44
53
  end
45
54
  end
46
-
47
55
  end
48
56
  end
49
- end
57
+ end
@@ -1,11 +1,21 @@
1
+ # Copyright 2015 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.
1
11
  module Cb
2
12
  module Utils
3
13
  class ResponseMap
4
14
  class << self
5
- def response_for request_class
15
+ def response_for(request_class)
6
16
  response_class = response_hash[request_class]
7
17
  return response_class unless response_class.nil?
8
- raise ResponseNotFoundError.new request_class
18
+ fail ResponseNotFoundError.new request_class
9
19
  end
10
20
 
11
21
  protected
@@ -60,7 +70,6 @@ module Cb
60
70
  Cb::Requests::State::Get => Cb::Responses::State
61
71
  }.merge response_hash_extension
62
72
  end
63
-
64
73
  end
65
74
  end
66
75
  class ResponseNotFoundError < StandardError
@@ -1,9 +1,18 @@
1
+ # Copyright 2015 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.
1
11
  require 'json'
2
12
  require 'nori'
3
13
 
4
14
  module Cb
5
15
  module ResponseValidator
6
-
7
16
  class << self
8
17
  def validate(response)
9
18
  raise_response_code_errors(response)
@@ -14,8 +23,8 @@ module Cb
14
23
 
15
24
  def raise_response_code_errors(response)
16
25
  code = response.code rescue nil
17
- raise Cb::ServiceUnavailableError if (code == 503 || simulate_auth_outage?)
18
- raise Cb::UnauthorizedError if code == 401
26
+ fail Cb::ServiceUnavailableError if code == 503 || simulate_auth_outage?
27
+ fail Cb::UnauthorizedError if code == 401
19
28
  end
20
29
 
21
30
  def simulate_auth_outage?
@@ -24,31 +33,24 @@ module Cb
24
33
 
25
34
  def process_response_body(response)
26
35
  body = response.response.body rescue nil
27
- return Hash.new if !body
36
+ return {} unless body
37
+
38
+ return {} if body.include?('<!DOCTYPE html') if response.code != 200
28
39
 
29
- if response.code != 200
30
- return Hash.new if body.include?('<!DOCTYPE html')
31
- end
32
-
33
40
  try_parse_json(body) || try_parse_xml(body) || {}
34
41
  end
35
42
 
36
43
  def try_parse_json(body)
37
- begin
38
- JSON.parse(body)
39
- rescue JSON::ParserError
40
- nil
41
- end
44
+ JSON.parse(body)
45
+ rescue JSON::ParserError
46
+ nil
42
47
  end
43
48
 
44
49
  def try_parse_xml(body)
45
- begin
46
- MultiXml.parse(body, KeepRoot: true)
47
- rescue MultiXml::ParseError
48
- nil
49
- end
50
+ MultiXml.parse(body, KeepRoot: true)
51
+ rescue MultiXml::ParseError
52
+ nil
50
53
  end
51
54
  end
52
-
53
55
  end
54
56
  end