cb-api 5.5.0 → 5.5.1

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.
@@ -45,7 +45,7 @@ module Cb
45
45
  end
46
46
 
47
47
  def api_client
48
- Cb::Utils::Api.new
48
+ Cb::Utils::Api.instance
49
49
  end
50
50
  end
51
51
  end
@@ -7,7 +7,7 @@ module Cb
7
7
  def self.submit_app(app)
8
8
  raise Cb::IncomingParamIsWrongTypeException unless app.is_a?(Cb::Models::ApplicationExternal)
9
9
 
10
- my_api = Cb::Utils::Api.new
10
+ my_api = Cb::Utils::Api.instance
11
11
  xml_hash = my_api.cb_post(Cb.configuration.uri_application_external, :body => app.to_xml)
12
12
 
13
13
  if xml_hash.has_key? 'ApplyUrl'
@@ -5,7 +5,7 @@ module Cb
5
5
  class Category
6
6
 
7
7
  def self.search
8
- my_api = Cb::Utils::Api.new
8
+ my_api = Cb::Utils::Api.instance
9
9
  json_hash = my_api.cb_get(Cb.configuration.uri_job_category_search)
10
10
  categoryList = []
11
11
 
@@ -23,7 +23,7 @@ module Cb
23
23
  end
24
24
 
25
25
  def self.search_by_host_site(host_site)
26
- my_api = Cb::Utils::Api.new
26
+ my_api = Cb::Utils::Api.instance
27
27
  json_hash = my_api.cb_get(Cb.configuration.uri_job_category_search, :query => {:CountryCode => host_site})
28
28
  categoryList = []
29
29
 
@@ -5,7 +5,7 @@ module Cb
5
5
  class Company
6
6
 
7
7
  def self.find_by_did(did)
8
- my_api = Cb::Utils::Api.new
8
+ my_api = Cb::Utils::Api.instance
9
9
  json_hash = my_api.cb_get(Cb.configuration.uri_company_find, :query => {:CompanyDID => did, :hostsite=> Cb.configuration.host_site})
10
10
 
11
11
  if json_hash.has_key?('Results')
@@ -6,7 +6,7 @@ module Cb
6
6
 
7
7
  def self.get_for(country)
8
8
  Cb::Utils::Country.is_valid? country ? country : 'US'
9
- my_api = Cb::Utils::Api.new
9
+ my_api = Cb::Utils::Api.instance
10
10
  json_hash = my_api.cb_get(Cb.configuration.uri_education_code, :query => {:countrycode => country})
11
11
 
12
12
  codes = []
@@ -5,7 +5,7 @@ module Cb
5
5
  class EmailSubscription
6
6
 
7
7
  def self.retrieve_by_did(did, host_site = '')
8
- my_api = Cb::Utils::Api.new
8
+ my_api = Cb::Utils::Api.instance
9
9
  json_hash = my_api.cb_get(Cb.configuration.uri_subscription_retrieve, :query => {:ExternalID => did, :Hostsite => host_site})
10
10
 
11
11
  if json_hash.has_key?('SubscriptionValues') && !json_hash['SubscriptionValues'].nil?
@@ -26,7 +26,7 @@ module Cb
26
26
  job_recs = job_recs.nil? ? 'false' : job_recs
27
27
  unsubscribe_all = unsubscribe_all.nil? ? 'false' : unsubscribe_all
28
28
 
29
- my_api = Cb::Utils::Api.new
29
+ my_api = Cb::Utils::Api.instance
30
30
 
31
31
  xml_body = "<Request>"
32
32
  xml_body += "<DeveloperKey>" + Cb.configuration.dev_key.to_s + "</DeveloperKey>"
@@ -26,7 +26,7 @@ module Cb
26
26
  private
27
27
 
28
28
  def api_client
29
- @api ||= Cb::Utils::Api.new
29
+ @api ||= Cb::Utils::Api.instance
30
30
  end
31
31
 
32
32
  end
@@ -3,7 +3,7 @@ module Cb
3
3
  class JobBranding
4
4
 
5
5
  def self.find_by_id id
6
- my_api = Cb::Utils::Api.new
6
+ my_api = Cb::Utils::Api.instance
7
7
  json_hash = my_api.cb_get Cb.configuration.uri_job_branding, :query => { :id => id }
8
8
 
9
9
  if json_hash.has_key? 'Branding'
@@ -5,7 +5,7 @@ module Cb
5
5
  class Recommendation
6
6
 
7
7
  def self.for_job(*args)
8
- my_api = Cb::Utils::Api.new
8
+ my_api = Cb::Utils::Api.instance
9
9
  hash = normalize_args(args)
10
10
  hash = set_hash_defaults(hash)
11
11
  json_hash = my_api.cb_get(Cb.configuration.uri_recommendation_for_job,
@@ -30,7 +30,7 @@ module Cb
30
30
  end
31
31
 
32
32
  def self.for_user(*args)
33
- my_api = Cb::Utils::Api.new
33
+ my_api = Cb::Utils::Api.instance
34
34
  hash = normalize_args(args)
35
35
  hash = set_hash_defaults(hash)
36
36
  json_hash = my_api.cb_get(Cb.configuration.uri_recommendation_for_user,
@@ -55,7 +55,7 @@ module Cb
55
55
  end
56
56
 
57
57
  def self.for_company(company_did)
58
- my_api = Cb::Utils::Api.new
58
+ my_api = Cb::Utils::Api.instance
59
59
  json_hash = my_api.cb_get(Cb.configuration.uri_recommendation_for_company, :query => {:CompanyDID => company_did})
60
60
 
61
61
  jobs = []
@@ -18,7 +18,7 @@ module Cb
18
18
  end
19
19
 
20
20
  def api_client
21
- @api ||= Cb::Utils::Api.new
21
+ @api ||= Cb::Utils::Api.instance
22
22
  end
23
23
 
24
24
  end
@@ -3,14 +3,14 @@ module Cb
3
3
  class TalentNetwork
4
4
 
5
5
  def self.join_form_questions(tndid)
6
- my_api = Cb::Utils::Api.new
6
+ my_api = Cb::Utils::Api.instance
7
7
  json_hash = my_api.cb_get("#{Cb.configuration.uri_tn_join_questions}/#{tndid}/json")
8
8
  tn_questions_collection = Models::TalentNetwork.new(json_hash)
9
9
  my_api.append_api_responses(tn_questions_collection, json_hash)
10
10
  end
11
11
 
12
12
  def self.join_form_branding(tndid)
13
- my_api = Cb::Utils::Api.new
13
+ my_api = Cb::Utils::Api.instance
14
14
  json_hash = my_api.cb_get("#{Cb.configuration.uri_tn_join_form_branding}/#{tndid}/json")
15
15
 
16
16
  if json_hash.has_key? 'Branding'
@@ -21,21 +21,21 @@ module Cb
21
21
  end
22
22
 
23
23
  def self.join_form_geography(tnlanguage="USEnglish")
24
- my_api = Cb::Utils::Api.new
24
+ my_api = Cb::Utils::Api.instance
25
25
  json_hash = my_api.cb_get("#{Cb.configuration.uri_tn_join_form_geo}", :query => {:TNLanguage => "#{tnlanguage}"})
26
26
  geo_dropdown = Models::TalentNetwork::JoinFormGeo.new(json_hash)
27
27
  my_api.append_api_responses(geo_dropdown, json_hash)
28
28
  end
29
29
 
30
30
  def self.member_create(args={})
31
- my_api = Cb::Utils::Api.new
31
+ my_api = Cb::Utils::Api.instance
32
32
  tn_member = Models::TalentNetwork::Member.new(args)
33
33
  json_hash = my_api.cb_post("#{Cb.configuration.uri_tn_member_create}/json", :body => tn_member.to_xml )
34
34
  my_api.append_api_responses(json_hash, json_hash)
35
35
  end
36
36
 
37
37
  def self.tn_job_information(job_did, join_form_intercept="true")
38
- my_api = Cb::Utils::Api.new
38
+ my_api = Cb::Utils::Api.instance
39
39
  json_hash = my_api.cb_get("#{Cb.configuration.uri_tn_job_info}/#{job_did}/json", :query=> {
40
40
  :RequestJoinFormIntercept => join_form_intercept})
41
41
 
@@ -18,7 +18,7 @@ module Cb
18
18
  end
19
19
 
20
20
  def retrieve(external_id, test_mode = false)
21
- my_api = Cb::Utils::Api.new
21
+ my_api = Cb::Utils::Api.instance
22
22
  json_hash = my_api.cb_post Cb.configuration.uri_user_retrieve, :body => build_retrieve_request(external_id, true)
23
23
  if json_hash.has_key? 'ResponseUserInfo'
24
24
  if json_hash['ResponseUserInfo'].has_key? 'UserInfo'
@@ -32,7 +32,7 @@ module Cb
32
32
 
33
33
  def change_password(external_id, old_password, new_password, test_mode = false)
34
34
  result = false
35
- my_api = Cb::Utils::Api.new
35
+ my_api = Cb::Utils::Api.instance
36
36
  json_hash = my_api.cb_post Cb.configuration.uri_user_change_password, :body => build_change_password_request(external_id, old_password, new_password, test_mode)
37
37
 
38
38
  if json_hash.has_key? 'ResponseUserChangePW'
@@ -47,7 +47,7 @@ module Cb
47
47
 
48
48
  def delete(external_id, password, test_mode = false)
49
49
  result = false
50
- my_api = Cb::Utils::Api.new
50
+ my_api = Cb::Utils::Api.instance
51
51
  json_hash = my_api.cb_post Cb.configuration.uri_user_delete, :body => build_delete_request(external_id, password, test_mode)
52
52
 
53
53
  if json_hash.has_key? 'ResponseUserDelete'
@@ -107,7 +107,7 @@ module Cb
107
107
  end
108
108
 
109
109
  def api_client
110
- Cb::Utils::Api.new
110
+ Cb::Utils::Api.instance
111
111
  end
112
112
 
113
113
  end
@@ -1,6 +1,6 @@
1
1
  module Cb
2
2
  class Config
3
- attr_accessor :dev_key, :base_uri, :debug_api, :time_out, :use_json, :host_site, :test_resources,
3
+ attr_accessor :dev_key, :base_uri, :debug_api, :time_out, :use_json, :host_site, :test_resources, :observers,
4
4
  :uri_job_search, :uri_job_find,
5
5
  :uri_company_find, :uri_job_category_search,
6
6
  :uri_education_code, :uri_employee_types,
@@ -127,7 +127,7 @@ module Cb
127
127
  @use_json = true
128
128
  @host_site = Cb.country.US
129
129
  @test_resources = false
130
-
130
+ @observers = Array.new
131
131
  set_default_api_uris
132
132
  end
133
133
  end
@@ -0,0 +1,7 @@
1
+ module Cb
2
+ module Models
3
+ class ApiCall < Struct.new(:api_call_type, :path, :options, :response)
4
+ end
5
+ end
6
+ end
7
+
@@ -1,14 +1,25 @@
1
1
  require 'httparty'
2
+ require 'observer'
2
3
 
3
4
  module Cb
4
5
  module Utils
5
6
  class Api
6
- include HTTParty
7
+ include HTTParty, Observable
7
8
 
8
9
  base_uri 'https://api.careerbuilder.com'
9
10
 
11
+ def self.instance
12
+ api = Cb::Utils::Api.new
13
+ Cb.configuration.observers.each do |class_name|
14
+ api.add_observer(class_name.new)
15
+ end
16
+ if Cb.configuration.debug_api && !Cb.configuration.observers.include?(Cb::Utils::ConsoleObserver)
17
+ api.add_observer(Cb::Utils::ConsoleObserver.new)
18
+ end
19
+ api
20
+ end
21
+
10
22
  def initialize
11
- self.class.debug_output $stderr if Cb.configuration.debug_api
12
23
  self.class.default_params :developerkey => Cb.configuration.dev_key,
13
24
  :outputjson => Cb.configuration.use_json.to_s
14
25
 
@@ -18,7 +29,9 @@ module Cb
18
29
 
19
30
  def cb_get(path, options={})
20
31
  self.class.base_uri Cb.configuration.base_uri
32
+ cb_event(:cb_get_before, path, options, nil)
21
33
  response = self.class.get(path, options)
34
+ cb_event(:cb_get_after, path, options, response)
22
35
  validated_response = ResponseValidator.validate(response)
23
36
  set_api_error(validated_response)
24
37
  validated_response
@@ -26,7 +39,9 @@ module Cb
26
39
 
27
40
  def cb_post(path, options={})
28
41
  self.class.base_uri Cb.configuration.base_uri
42
+ cb_event(:cb_post_before, path, options, nil)
29
43
  response = self.class.post(path, options)
44
+ cb_event(:cb_post_after, path, options, response)
30
45
  validated_response = ResponseValidator.validate(response)
31
46
  set_api_error(validated_response)
32
47
  validated_response
@@ -34,7 +49,9 @@ module Cb
34
49
 
35
50
  def cb_put(path, options={})
36
51
  self.class.base_uri Cb.configuration.base_uri
52
+ cb_event(:cb_put_before, path, options, nil)
37
53
  response = self.class.put(path, options)
54
+ cb_event(:cb_put_after, path, options, response)
38
55
  validated_response = ResponseValidator.validate(response)
39
56
  set_api_error(validated_response)
40
57
  validated_response
@@ -88,6 +105,15 @@ module Cb
88
105
 
89
106
  private
90
107
 
108
+ def api_call_model(api_call_type, path, options, response)
109
+ Cb::Models::ApiCall.new(api_call_type, path, options, response)
110
+ end
111
+
112
+ def cb_event(api_call_type, path, options, response)
113
+ changed(true)
114
+ notify_observers(api_call_model(api_call_type, path, options, response))
115
+ end
116
+
91
117
  def ensure_non_nil_metavalues(obj)
92
118
  if obj.respond_to?('cb_response') && !obj.cb_response.nil?
93
119
  obj.cb_response
@@ -0,0 +1,10 @@
1
+ module Cb
2
+ module Utils
3
+ class ConsoleObserver
4
+ 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}"
6
+ end
7
+ end
8
+ end
9
+ end
10
+
@@ -1,3 +1,3 @@
1
1
  module Cb
2
- VERSION = '5.5.0'
2
+ VERSION = '5.5.1'
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.0
4
+ version: 5.5.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -120,7 +120,7 @@ dependencies:
120
120
  requirements:
121
121
  - - ! '>='
122
122
  - !ruby/object:Gem::Version
123
- version: '2.11'
123
+ version: '2.14'
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
@@ -128,7 +128,7 @@ dependencies:
128
128
  requirements:
129
129
  - - ! '>='
130
130
  - !ruby/object:Gem::Version
131
- version: '2.11'
131
+ version: '2.14'
132
132
  - !ruby/object:Gem::Dependency
133
133
  name: rdoc
134
134
  requirement: !ruby/object:Gem::Requirement
@@ -258,6 +258,7 @@ files:
258
258
  - lib/cb/models/implementations/talent_network.rb
259
259
  - lib/cb/models/implementations/spot.rb
260
260
  - lib/cb/models/implementations/email_subscription.rb
261
+ - lib/cb/models/api_call_model.rb
261
262
  - lib/cb/convenience.rb
262
263
  - lib/cb/clients/job_branding.rb
263
264
  - lib/cb/clients/recommendation.rb
@@ -278,6 +279,7 @@ files:
278
279
  - lib/cb/utils/country.rb
279
280
  - lib/cb/utils/validator.rb
280
281
  - lib/cb/utils/meta_values.rb
282
+ - lib/cb/utils/console_observer.rb
281
283
  - lib/cb/utils/api.rb
282
284
  - lib/cb/utils/fluid_attributes.rb
283
285
  - README.md