cb-api 0.2.8 → 0.2.9

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzhjMjgzM2JhMzI1YmE0YTE3ZWExZGViNzg1NDI2MDVlN2FmZGE3Zg==
4
+ ZTE0YTQ1OTdhMWEzODVkMzRiNGVkY2M2ZTE4N2QyY2VhNWM4ZTY5Mw==
5
5
  data.tar.gz: !binary |-
6
- NjFkMzc0MWNkZmQ5NDRhZjhiYTQ0YjUwYjk1MDc5ZmQxNmQzNWY2ZA==
6
+ MTJhM2FiODZmY2EwZjE3MmFhMzljYjkxMjBlNjA3MzNhYzE4MDUyYg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MGNhZTNkMzBmYzcyZmI4NDVkMzk1NDczYTlkYmJjM2JmODhkMzU3NWMxYmU2
10
- MDAyYjE0YjlmNWIyYzI1NjYzZmE2ZmRiZTEwYzM0N2RhMTcwYjU0NjlhNmFi
11
- NzM4NDczYTBlZWE1ZTFkYTIyODVlNDg2ODI2YTczOTkxNWM1ZTc=
9
+ MzRkNDQ4MmZiMGRhNGRkZDY4OWY5ZmUzNzgyZDI0MDczMWMzYzU0Zjg4MmM5
10
+ YjYxNDA4MWQ2MWVjNjFmMGI3ZGIyMTRhNGU0NjFiZjlkYjE4ZTkwMjJhYTgy
11
+ Mzg5M2EwODA0ZTg5YjA3MWViOTIxZjcxYmRlYWVlMDJjYTA2YzA=
12
12
  data.tar.gz: !binary |-
13
- MmUwOTdjMDhlMGE4YzM5ZTE1ZTdhYTllMmZkYTBlMzE5OGM1NGQwM2NhNDk3
14
- NWRmMTFhMjVhMGIxNmI2Yjc2MjliNmM2M2I0M2E1NTk0ZWQ2ODRjYTZiZGNi
15
- NDRlMWNhMDE3M2I1YWQxZTY0NDdkZDZmZjlmNWQyMDRhNmQzZTg=
13
+ N2JiNjhiZDI4YzZhN2M2ZDUxOWM1ODZlNThiZTQ1NjNiZDdmMWMxOGRjOGE1
14
+ ODIwOGYwNTNmN2I0Yzk1ZTE4MzE4ZjMyNTExYjZiNzdkOTUzZjg5MDBiMWEz
15
+ MGU5YjYwYWVkNjQ5YjhhMmY0NDg0NjcxYTk3NTI5YmEwN2ViMmI=
data/lib/cb.rb CHANGED
@@ -86,4 +86,8 @@ module Cb
86
86
  def self.saved_search_api
87
87
  Cb::SavedSearchApi
88
88
  end
89
+
90
+ def self.talent_network_api
91
+ Cb::TalentNetworkApi
92
+ end
89
93
  end
@@ -8,10 +8,11 @@ module Cb
8
8
  ## For detailed information around this API please visit:
9
9
  ## http://api.careerbuilder.com/Recommendations.aspx
10
10
  #############################################################
11
- def self.for_job(did, site_id = '', co_brand = '')
11
+ def self.for_job(did, countlimit = '25', site_id = '', co_brand = '')
12
12
  my_api = Cb::Utils::Api.new()
13
13
  cb_response = my_api.cb_get(Cb.configuration.uri_recommendation_for_job,
14
- :query => {:JobDID => did, :SiteID => site_id, :CoBrand => co_brand})
14
+ :query => {:JobDID => did, :CountLimit => countlimit, :SiteID => site_id,
15
+ :CoBrand => co_brand, :HostSite => Cb.configuration.host_site})
15
16
  json_hash = JSON.parse(cb_response.response.body)
16
17
 
17
18
  jobs = []
@@ -32,10 +33,10 @@ module Cb
32
33
  ## For detailed information around this API please visit:
33
34
  ## http://api.careerbuilder.com/Recommendations.aspx
34
35
  #############################################################
35
- def self.for_user(external_id, site_id = '', co_brand = '')
36
+ def self.for_user(external_id, countlimit = '25', site_id = '', co_brand = '')
36
37
  my_api = Cb::Utils::Api.new()
37
38
  cb_response = my_api.cb_get(Cb.configuration.uri_recommendation_for_user,
38
- :query => {:ExternalID => external_id, :SiteID => site_id, :CoBrand => co_brand,
39
+ :query => {:ExternalID => external_id, :CountLimit => countlimit, :SiteID => site_id, :CoBrand => co_brand,
39
40
  :HostSite => Cb.configuration.host_site})
40
41
  json_hash = JSON.parse(cb_response.response.body)
41
42
 
@@ -14,8 +14,13 @@ module Cb
14
14
  my_api = Cb::Utils::Api.new
15
15
  cb_response = my_api.cb_post Cb.configuration.uri_saved_search_create, :body => CbSavedSearch.new(args).create_to_xml
16
16
  json_hash = JSON.parse cb_response.response.body
17
- saved_search = CbSavedSearch.new json_hash['SavedJobSearch']['SavedSearch']
18
- my_api.append_api_responses saved_search, json_hash['SavedJobSearch']['SavedSearch']
17
+ unless json_hash['SavedJobSearch']['SavedSearch'].nil?
18
+ saved_search = CbSavedSearch.new json_hash['SavedJobSearch']['SavedSearch']
19
+ else
20
+ saved_search = CbSavedSearch.new json_hash['SavedJobSearch']
21
+ end
22
+
23
+ my_api.append_api_responses saved_search, json_hash['SavedJobSearch']
19
24
 
20
25
  return saved_search
21
26
  end
@@ -31,8 +36,8 @@ module Cb
31
36
  my_api = Cb::Utils::Api.new
32
37
  cb_response = my_api.cb_post Cb.configuration.uri_saved_search_update, :body => CbSavedSearch.new(args).update_to_xml
33
38
  json_hash = JSON.parse cb_response.response.body
34
- saved_search = CbSavedSearch.new json_hash['SavedJobSearch']['SavedSearch']
35
- my_api.append_api_responses saved_search, json_hash['SavedJobSearch']['SavedSearch']
39
+ saved_search = CbSavedSearch.new json_hash['SavedJobSearch']
40
+ my_api.append_api_responses saved_search, json_hash['SavedJobSearch']
36
41
 
37
42
  return saved_search
38
43
  end
@@ -1,28 +1,75 @@
1
1
  module Cb
2
- class TalentNetwork
2
+ class TalentNetworkApi
3
3
  ####################################################
4
4
  ## Documentation:
5
5
  ## http://api.careerbuilder.com/TalentNetwork.aspx
6
6
  ####################################################
7
7
 
8
- def self.join_form_questions(tndid, responsetype)
8
+ def self.join_form_questions(tndid)
9
9
  ## Load the join form questions for a TalentNetworkDID
10
- responsetype = 'xml' if responsetype.blank?
11
10
  my_api = Cb::Utils::Api.new()
12
- cb_response = my_api.cb_get("#{Cb.configuration.uri_tn_join_questions}/#{tndid}/#{responsetype}")
11
+ cb_response = my_api.cb_get_secure("#{Cb.configuration.uri_tn_join_questions}/#{tndid}/json")
12
+ json_hash = JSON.parse(cb_response.response.body)
13
+
14
+ tn_questions_collection = TalentNetwork.new(json_hash)
15
+ my_api.append_api_responses(tn_questions_collection, json_hash)
16
+
17
+ return tn_questions_collection
13
18
  end
14
19
 
15
- def self.join_form_branding
20
+ def self.join_form_branding(tndid)
16
21
  ## Gets branding information (stylesheets, copytext, etc...) for the join form.
22
+ my_api = Cb::Utils::Api.new
23
+
24
+ cb_response = my_api.cb_get_secure("#{Cb.configuration.uri_tn_join_form_branding}/#{tndid}/json")
25
+ json_hash = JSON.parse(cb_response.response.body)
26
+
27
+ tn_join_form_branding = TalentNetwork::JoinFormBranding.new(json_hash['Branding'])
28
+ my_api.append_api_responses(tn_join_form_branding, json_hash)
29
+
30
+ return tn_join_form_branding
31
+
17
32
  end
18
33
 
19
- def self.join_form_geography
34
+ def self.join_form_geography(tnlanguage="USEnglish")
20
35
  ## Gets locations needed to fill the Geography question from the Join Form Question API
36
+ my_api = Cb::Utils::Api.new
37
+ cb_response = my_api.cb_get_secure("#{Cb.configuration.uri_tn_join_form_geo}", :query=>{:TNLanguage=>"#{tnlanguage}"})
38
+ json_hash = JSON.parse(cb_response.response.body)
39
+
40
+ geo_dropdown = TalentNetwork::JoinFormGeo.new(json_hash)
41
+ my_api.append_api_responses(geo_dropdown, json_hash)
42
+
43
+ return geo_dropdown
21
44
  end
22
45
 
23
- def self.member_create
46
+ def self.member_create(args={})
24
47
  ## Creates a member based on the form built with the Join Form Questions API call
48
+ my_api = Cb::Utils::Api.new
49
+ tn_member = TalentNetwork::Member.new(args)
50
+ cb_response = my_api.cb_post("#{Cb.configuration.uri_tn_member_create}/json", :body => tn_member.to_xml )
51
+ json_hash = JSON.parse(cb_response.response.body)
52
+
53
+ my_api.append_api_responses(tn_member, json_hash)
54
+
55
+ if cb_response.success? && cb_response['Errors'].size == 0
56
+ return cb_response["MemberDID"]
57
+ end
58
+
59
+ return cb_response['Errors'].first
25
60
  end
26
61
 
62
+ def self.tn_job_information(job_did, join_form_intercept="true")
63
+ my_api = Cb::Utils::Api.new
64
+ cb_response = my_api.cb_get_secure("#{Cb.configuration.uri_tn_job_info}/#{job_did}/json", :query=> {
65
+ :RequestJoinFormIntercept=>join_form_intercept})
66
+ json_hash = JSON.parse(cb_response.response.body)
67
+
68
+ tn_job_info = TalentNetwork::JobInfo.new(json_hash['Response'])
69
+ my_api.append_api_responses(tn_job_info, json_hash)
70
+
71
+ return tn_job_info
72
+
73
+ end
27
74
  end #TalentNetworkJoinQuestions
28
75
  end #module
data/lib/cb/config.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Cb
2
2
  class Config
3
- attr_accessor :dev_key, :debug_api, :time_out, :use_json, :host_site,
3
+ attr_accessor :dev_key, :base_uri, :base_uri_secure, :debug_api, :time_out, :use_json, :host_site,
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,
@@ -15,7 +15,8 @@ module Cb
15
15
  :uri_resume_create, :uri_resume_update, :uri_resume_delete,
16
16
  :uri_saved_search_retrieve, :uri_saved_search_create, :uri_saved_search_update, :uri_saved_search_list, :uri_saved_search_delete,
17
17
  :uri_saved_job_search_create,
18
- :uri_job_branding, :uri_tn_join_questions,
18
+ :uri_job_branding, :uri_tn_join_questions, :uri_tn_job_info, :uri_tn_join_form_geo,
19
+ :uri_tn_join_form_branding, :uri_tn_member_create,
19
20
  :uri_subscription_retrieve, :uri_subscription_modify
20
21
 
21
22
  def initialize
@@ -52,6 +53,10 @@ module Cb
52
53
  @uri_saved_search_delete ||= '/v1/savedsearch/delete'
53
54
  @uri_saved_search_list ||= '/v1/savedsearch/list'
54
55
  @uri_tn_join_questions ||= '/talentnetwork/config/join/questions'
56
+ @uri_tn_job_info ||= '/talentnetwork/internal/job'
57
+ @uri_tn_join_form_geo ||= '/tn/JoinForm/Geo'
58
+ @uri_tn_join_form_branding ||= '/talentnetwork/config/layout/branding'
59
+ @uri_tn_member_create ||= '/talentnetwork/member/create'
55
60
  @uri_subscription_retrieve ||= '/v1/user/subscription/retrieve'
56
61
  @uri_subscription_modify ||= '/v1/user/subscription'
57
62
  @uri_saved_job_search_create ||= '/v2/savedsearch/create'
@@ -102,6 +107,8 @@ module Cb
102
107
  def set_defaults
103
108
 
104
109
  @dev_key = 'ruby-cb-api' # Get a developer key at http://api.careerbuilder.com
110
+ @base_uri = 'http://api.careerbuilder.com'
111
+ @base_uri_secure = 'https://api.careerbuilder.com'
105
112
  @debug_api = false
106
113
  @time_out = 5
107
114
  @use_json = true
@@ -9,7 +9,8 @@ module Cb
9
9
  :description, :requirements, :employment_type,
10
10
  :details_url, :service_url, :similar_jobs_url, :apply_url,
11
11
  :begin_date, :end_date, :posted_date,
12
- :relevancy, :state, :city, :zip
12
+ :relevancy, :state, :city, :zip,
13
+ :can_be_quick_applied
13
14
 
14
15
  attr_writer :external_application, :relocation_covered, :manages_others, :is_screener_apply,
15
16
  :is_shared_job
@@ -81,6 +82,7 @@ module Cb
81
82
  @external_application = args['ExternalApplication'] || ''
82
83
  @is_screener_apply = args['IsScreenerApply'] || ''
83
84
  @is_shared_job = args['IsSharedJob'] || ''
85
+ @can_be_quick_applied = args['CanBeQuickApplied'] || ''
84
86
 
85
87
  # Company related
86
88
  @company_name = args['Company'] || ''
@@ -126,5 +128,25 @@ module Cb
126
128
  def shared_job?
127
129
  @is_shared_job.downcase == 'true' ? true : false
128
130
  end
131
+
132
+ def can_be_quick_applied?
133
+ @can_be_quick_applied.downcase == 'true' ? true : false
134
+ end
135
+
136
+ def city
137
+ if @city.empty?
138
+ return @location['City']
139
+ else
140
+ return @city
141
+ end
142
+ end
143
+
144
+ def state
145
+ if @state.empty?
146
+ return @location['State']
147
+ else
148
+ return @state
149
+ end
150
+ end
129
151
  end
130
152
  end
@@ -5,7 +5,7 @@ module Cb
5
5
  :emp_type, :exclude_company_names, :exclude_job_titles, :exclude_national, :industry_codes,
6
6
  :keywords, :order_by, :order_direction, :radius, :pay_high, :pay_low, :posted_within,
7
7
  :pay_info_only, :location, :job_category, :company, :city, :state, :is_daily_email, :external_id,
8
- :external_user_id, :dev_key, :job_search_url, :jrdid
8
+ :external_user_id, :dev_key, :job_search_url, :jrdid, :errors
9
9
 
10
10
  def initialize(args={})
11
11
  @hostsite = args['HostSite'] || ''
@@ -40,6 +40,7 @@ module Cb
40
40
  @dev_key = args['DeveloperKey'] || ''
41
41
  @job_search_url = args['JobSearchUrl'] || ''
42
42
  @jrdid = args['JRDID'] || ''
43
+ @errors = args['Errors'] || nil
43
44
  end
44
45
 
45
46
  def create_to_xml
@@ -0,0 +1,158 @@
1
+ module Cb
2
+ class TalentNetwork
3
+ attr_accessor :join_form_questions
4
+ def initialize(args={})
5
+ @join_form_questions = Array.new
6
+ if args.has_key?('JoinQuestions')
7
+ args['JoinQuestions'].each do |question|
8
+ @join_form_questions << TalentNetwork::Questions.new(question)
9
+ end
10
+ end
11
+ end
12
+ end
13
+
14
+ class TalentNetwork::Member
15
+ attr_accessor :dev_key, :tn_did, :preferred_language, :accept_privacy, :accept_terms, :resume_word_doc,
16
+ :join_values
17
+
18
+ def initialize(args={})
19
+ @dev_key = args['DeveloperKey'] || Cb.configuration.dev_key
20
+ @tn_did = args['TNDID'] || ''
21
+ @preferred_language = args['PreferredLanguage'] || 'USEnglish'
22
+ @accept_privacy = args['AcceptPrivacy'] || true
23
+ @accept_terms = args['AcceptTerms'] || true
24
+ @resume_word_doc = args['ResumeWordDoc'] || ''
25
+ @join_values = Hash.new
26
+ if args.has_key?('JoinValues')
27
+ @join_values = Hash[args['JoinValues'].each_slice(2).to_a]
28
+ end
29
+ end
30
+
31
+ def to_xml
32
+ ret = "<Request>"
33
+ ret += "<DeveloperKey>#{@dev_key}</DeveloperKey>"
34
+ ret += "<TalentNetworkDID>#{@tn_did}</TalentNetworkDID>"
35
+ ret += "<PreferredLanguage>#{@preferred_language}</PreferredLanguage>"
36
+ ret += "<AcceptPrivacy>#{@accept_privacy}</AcceptPrivacy>"
37
+ ret += "<AcceptTerms>#{@accept_terms}</AcceptTerms>"
38
+ ret += "<ResumeWordDoc>#{@resume_word_doc}</ResumeWordDoc>"
39
+ ret += "<JoinValues>"
40
+ @join_values.each { | k,v |
41
+ ret += "<JoinValue>"
42
+ ret += "<Key>#{k}</Key>"
43
+ ret += "<Value>#{v}</Value>"
44
+ ret += "</JoinValue>"
45
+ }
46
+ ret += "</JoinValues>"
47
+ ret += "</Request>"
48
+ end
49
+ end
50
+
51
+
52
+ class TalentNetwork::Questions
53
+ attr_accessor :text, :form_value, :option_display_type, :order, :required, :options
54
+
55
+ def initialize(args={})
56
+ @text = args['Text'] || ''
57
+ @form_value = args['FormValue'] || ''
58
+ @option_display_type = args['OptionDisplayType'] || ''
59
+ @order = args['Order'] || ''
60
+ @required = args['Required'].to_s || ''
61
+ @options = Array.new
62
+ if args.has_key?('Options')
63
+ args['Options'].each do |option_values|
64
+ @options << TalentNetwork::Options.new(option_values)
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ class TalentNetwork::Options
71
+ attr_accessor :value, :order, :display_text
72
+
73
+ def initialize(args={})
74
+ @value = args['Value'] || ''
75
+ @order = args['Order'] || ''
76
+ @display_text = args['DisplayText'] || ''
77
+ end
78
+ end
79
+
80
+ class TalentNetwork::JobInfo
81
+ attr_accessor :join_form_url, :tn_did, :join_form_intercept_enabled
82
+
83
+ def initialize(args={})
84
+ @join_form_url = args['JoinFormUrl'] || ''
85
+ @tn_did = args['sTNDID'] || ''
86
+ @join_form_intercept_enabled = args['JoinFormInterceptEnabled'].to_s || ''
87
+ end
88
+ end
89
+
90
+ class TalentNetwork::JoinFormGeo
91
+ attr_accessor :countries, :states
92
+
93
+ def initialize(args={})
94
+ @countries = Hash.new
95
+ @states = Hash.new
96
+
97
+ if args.has_key?('Countries')
98
+ @countries = TalentNetwork::JoinFormGeoLocation.new(args['Countries'])
99
+ end
100
+
101
+ if args.has_key?('States')
102
+ @states = TalentNetwork::JoinFormGeoLocation.new(args['States'])
103
+ end
104
+
105
+ end
106
+ end
107
+
108
+ class TalentNetwork::JoinFormGeoLocation
109
+ attr_accessor :geo_hash
110
+
111
+ def initialize(args={})
112
+ value = Array.new
113
+ display_val = Array.new
114
+ @geo_hash = Hash.new
115
+
116
+ if args.has_key?('Value')
117
+ args['Value'].each do |val|
118
+ value << val
119
+ end
120
+ end
121
+
122
+ if args.has_key?('Display')
123
+ args['Display'].each do |display|
124
+ display_val << display
125
+ end
126
+ end
127
+
128
+ unless value.nil? || display_val.nil?
129
+ @geo_hash = convert_to_hash(display_val,value)
130
+ end
131
+ end
132
+
133
+ private
134
+ def convert_to_hash(keys, values)
135
+ geo_hash = Hash.new
136
+ geo_hash = Hash[keys.zip(values)]
137
+
138
+ return geo_hash
139
+ end
140
+ end
141
+
142
+ class TalentNetwork::JoinFormBranding
143
+ attr_accessor :stylesheet_url, :join_logo_image_url, :join_custom_msg_html, :button_color,
144
+ :mobile_logo_image_url, :nav_color, :site_path
145
+
146
+ def initialize(args={})
147
+ @stylesheet_url = args['StylesheetURL'] || ''
148
+ @join_logo_image_url = args['JoinLogoImageURL'] || ''
149
+ @join_custom_msg_html = args['JoinCustomMsgHTML'] || ''
150
+ @button_color = args['ButtonColor'] || ''
151
+ @mobile_logo_image_url = args['MobileLogoImageURL'] || ''
152
+ @nav_color = args['NavColor'] || ''
153
+ @site_path = args['SitePath'] || ''
154
+ end
155
+ end
156
+
157
+
158
+ end
data/lib/cb/utils/api.rb CHANGED
@@ -15,12 +15,17 @@ module Cb
15
15
  end
16
16
 
17
17
  def cb_get(*args, &block)
18
- self.class.base_uri 'http://api.careerbuilder.com'
18
+ self.class.base_uri Cb.configuration.base_uri
19
+ self.class.get(*args, &block)
20
+ end
21
+
22
+ def cb_get_secure(*args, &block)
23
+ self.class.base_uri Cb.configuration.base_uri_secure
19
24
  self.class.get(*args, &block)
20
25
  end
21
26
 
22
27
  def cb_post(*args, &block)
23
- self.class.base_uri 'https://api.careerbuilder.com'
28
+ self.class.base_uri Cb.configuration.base_uri_secure
24
29
  self.class.post(*args, &block)
25
30
  end
26
31
 
@@ -77,6 +82,7 @@ module Cb
77
82
  def get_meta_name_for(api_key)
78
83
  key_map = {
79
84
  'Errors' => 'errors',
85
+ 'ApiError' => 'api_error',
80
86
  'TimeResponseSent' => 'time_sent',
81
87
  'TimeElapsed' => 'time_elapsed',
82
88
  'TotalPages' => 'total_pages',
@@ -0,0 +1,28 @@
1
+ require 'json'
2
+
3
+ module Cb
4
+ module ResponseValidator
5
+
6
+ def self.validate(response)
7
+ if response.blank? || response.response.body.blank?
8
+ return false
9
+ end
10
+
11
+ if response.code != 200
12
+ return false
13
+ end
14
+
15
+ begin
16
+ json = JSON.parse(response.response.body)
17
+ if json.keys.any? && json[json.keys[0]].empty?
18
+ return false
19
+ end
20
+ rescue JSON::ParserError
21
+ return false
22
+ end
23
+
24
+ return true
25
+
26
+ end
27
+ end
28
+ end
data/lib/cb/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Cb
2
- VERSION = '0.2.8'
2
+ VERSION = '0.2.9'
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: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse Retchko
@@ -12,10 +12,13 @@ authors:
12
12
  - Kyle Bumpus
13
13
  - Jon Molinaro
14
14
  - Ben Schmaltz
15
+ - Raul Gil
16
+ - Christina Chatham
17
+ - Alex Hristov
15
18
  autorequire:
16
19
  bindir: bin
17
20
  cert_chain: []
18
- date: 2013-08-13 00:00:00.000000000 Z
21
+ date: 2013-08-22 00:00:00.000000000 Z
19
22
  dependencies:
20
23
  - !ruby/object:Gem::Dependency
21
24
  name: httparty
@@ -69,6 +72,9 @@ email:
69
72
  - David.Posey@Careerbuilder.com
70
73
  - Kyle.Bumpus@Careerbuilder.com
71
74
  - Ben.Schmaltz@Careerbuilder.com
75
+ - Raul.Gil@Careerbuilder.com
76
+ - Christina.Chatham@Careerbuilder.com
77
+ - Alex.Hristov@Careerbuilder.com
72
78
  executables: []
73
79
  extensions: []
74
80
  extra_rdoc_files: []
@@ -115,12 +121,14 @@ files:
115
121
  - lib/cb/models/cb_job_branding.rb
116
122
  - lib/cb/models/cb_resume.rb
117
123
  - lib/cb/models/cb_saved_search.rb
124
+ - lib/cb/models/cb_talent_network.rb
118
125
  - lib/cb/models/cb_user.rb
119
126
  - lib/cb/utils/api.rb
120
127
  - lib/cb/utils/country.rb
121
128
  - lib/cb/utils/fluid_attributes.rb
122
129
  - lib/cb/utils/meta_values.rb
123
130
  - lib/cb/utils/string.rb
131
+ - lib/cb/utils/validator.rb
124
132
  - lib/cb/version.rb
125
133
  - lib/cb.rb
126
134
  - README.md