cb-api 17.4.0 → 18.0.0

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