cb-api 0.2.8 → 0.2.9

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