cb-api 4.3.0 → 5.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.
@@ -3,69 +3,32 @@ require 'json'
3
3
  module Cb
4
4
  module Clients
5
5
  class Job
6
+ class << self
6
7
 
7
- attr_accessor :cb_client
8
-
9
- def initialize
10
- @cb_client ||= Cb.api_client.new
11
- end
12
-
13
- def self.search(api_args_hash)
14
- my_api = Cb::Utils::Api.new
15
- json_hash = my_api.cb_get(Cb.configuration.uri_job_search, :query => api_args_hash)
16
-
17
- jobs = Array.new
18
- if !json_hash['ResponseJobSearch'].nil? && !json_hash['ResponseJobSearch']['Results'].nil?
19
- job_results = json_hash['ResponseJobSearch']['Results']['JobSearchResult']
20
- job_results = [job_results] unless job_results.is_a?(Array)
21
- job_results.each { |job_hash| jobs.push(Models::Job.new(job_hash)) }
22
- my_api.append_api_responses(jobs, json_hash['ResponseJobSearch'])
23
-
24
- if response_has_search_metadata?(json_hash['ResponseJobSearch'])
25
- my_api.append_api_responses(jobs, json_hash['ResponseJobSearch']['SearchMetaData']['SearchLocations']['SearchLocation'])
26
- end
8
+ def search(args)
9
+ response = api_client.cb_get(Cb.configuration.uri_job_search, query: args)
10
+ Cb::Responses::Job::Search.new(response)
27
11
  end
28
12
 
29
- my_api.append_api_responses(jobs, json_hash)
30
- end
31
-
32
- def self.find_by_criteria(criteria)
33
- my_api = Cb::Utils::Api.new
34
- params = my_api.class.criteria_to_hash(criteria)
35
- json_hash = my_api.cb_get(Cb.configuration.uri_job_find, :query => params)
36
-
37
- if json_hash.has_key?('ResponseJob')
38
- if json_hash['ResponseJob'].has_key?('Job')
39
- job = Models::Job.new(json_hash['ResponseJob']['Job'])
40
- end
41
- my_api.append_api_responses(job, json_hash['ResponseJob'])
13
+ def find_by_criteria(criteria)
14
+ query = api_client.class.criteria_to_hash(criteria)
15
+ json_response = api_client.cb_get(Cb.configuration.uri_job_find, query: query)
16
+ Responses::Job::Singular.new(json_response)
42
17
  end
43
- my_api.append_api_responses(job, json_hash)
44
- end
45
-
46
- def find_by_criteria(criteria)
47
- query = cb_client.class.criteria_to_hash(criteria)
48
- json_response = cb_client.cb_get(Cb.configuration.uri_job_find, :query => query)
49
- singular_model_response(json_response, criteria.did)
50
- end
51
18
 
52
- def self.find_by_did(did)
53
- criteria = Cb::Criteria::Job::Details.new
54
- criteria.did = did
55
- criteria.show_custom_values = true
56
- return find_by_criteria(criteria)
57
- end
19
+ def find_by_did(did)
20
+ criteria = Cb::Criteria::Job::Details.new
21
+ criteria.did = did
22
+ criteria.show_custom_values = true
23
+ find_by_criteria(criteria)
24
+ end
58
25
 
59
- private
26
+ private
60
27
 
61
- def self.response_has_search_metadata?(response_hash)
62
- response_hash['SearchMetaData'] &&
63
- response_hash['SearchMetaData']['SearchLocations'] &&
64
- response_hash['SearchMetaData']['SearchLocations']['SearchLocation']
65
- end
28
+ def api_client
29
+ @api ||= Cb::Utils::Api.new
30
+ end
66
31
 
67
- def singular_model_response(json_hash, did = nil)
68
- Responses::Job::Singular.new(json_hash)
69
32
  end
70
33
  end
71
34
  end
@@ -9,7 +9,7 @@ module Cb
9
9
  def job
10
10
  Cb::Clients::Job
11
11
  end
12
-
12
+
13
13
  def job_details_criteria
14
14
  Cb::Criteria::Job::Details.new
15
15
  end
@@ -0,0 +1,27 @@
1
+ module Cb
2
+ module Models
3
+ class JobResults
4
+ attr_reader :args_hash, :jobs, :total_count, :last_item_index, :city, :state_code, :postal_code, :search_location
5
+ def initialize(args_hash, job_hashes)
6
+ @args_hash = args_hash
7
+ @jobs = extract_jobs(job_hashes)
8
+ @total_count = args_hash['TotalCount']
9
+ @last_item_index = args_hash['LastItemIndex']
10
+ @city = args_hash['City']
11
+ @state_code = args_hash['StateCode']
12
+ @postal_code = args_hash['PostalCode']
13
+ @search_location = args_hash['SearchMetaData']['SearchLocations']['SearchLocation'] rescue nil
14
+ end
15
+
16
+ private
17
+
18
+ def extract_jobs(job_hashes)
19
+ job_hashes.collect do |job_hash|
20
+ Job.new(job_hash)
21
+ end
22
+ end
23
+
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,39 @@
1
+ module Cb
2
+ module Responses
3
+ module Job
4
+ class Search < ApiResponse
5
+
6
+ protected
7
+
8
+ def validate_api_hash
9
+ required_response_field(root_node, response)
10
+ end
11
+
12
+ def hash_containing_metadata
13
+ response[root_node]
14
+ end
15
+
16
+ def extract_models
17
+ Models::JobResults.new(response[root_node], job_hashes)
18
+ end
19
+
20
+ private
21
+
22
+ def root_node
23
+ 'ResponseJobSearch'
24
+ end
25
+
26
+ def job_hashes
27
+ hashes = response[root_node]['Results']['JobSearchResult'] rescue []
28
+
29
+ if hashes.is_a?(Array)
30
+ hashes
31
+ else
32
+ [hashes]
33
+ end
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Cb
2
- VERSION = '4.3.0'
2
+ VERSION = '5.0.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: 4.3.0
4
+ version: 5.0.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-03 00:00:00.000000000 Z
12
+ date: 2014-03-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -224,6 +224,7 @@ files:
224
224
  - lib/cb/responses/application.rb
225
225
  - lib/cb/responses/metadata.rb
226
226
  - lib/cb/responses/job/singular.rb
227
+ - lib/cb/responses/job/search.rb
227
228
  - lib/cb/responses/spot/retrieve_response.rb
228
229
  - lib/cb/responses/api_response.rb
229
230
  - lib/cb/responses/user/check_existing.rb
@@ -243,6 +244,7 @@ files:
243
244
  - lib/cb/models/implementations/application/response.rb
244
245
  - lib/cb/models/implementations/job.rb
245
246
  - lib/cb/models/implementations/user.rb
247
+ - lib/cb/models/implementations/job_results.rb
246
248
  - lib/cb/models/implementations/education.rb
247
249
  - lib/cb/models/implementations/application_external.rb
248
250
  - lib/cb/models/implementations/saved_search.rb