cb-api 1.3.6 → 2.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.
Files changed (98) hide show
  1. data/lib/cb.rb +7 -99
  2. data/lib/cb/clients/anon_saved_search.rb +42 -0
  3. data/lib/cb/clients/application.rb +53 -0
  4. data/lib/cb/clients/application_external.rb +24 -0
  5. data/lib/cb/clients/category.rb +49 -0
  6. data/lib/cb/clients/company.rb +34 -0
  7. data/lib/cb/clients/education.rb +28 -0
  8. data/lib/cb/clients/email_subscription.rb +55 -0
  9. data/lib/cb/clients/employee_types.rb +31 -0
  10. data/lib/cb/clients/job.rb +57 -0
  11. data/lib/cb/clients/job_branding.rb +21 -0
  12. data/lib/cb/clients/recommendation.rb +76 -0
  13. data/lib/cb/clients/saved_search.rb +66 -0
  14. data/lib/cb/clients/spot.rb +27 -0
  15. data/lib/cb/clients/talent_network.rb +51 -0
  16. data/lib/cb/clients/user.rb +94 -0
  17. data/lib/cb/convenience.rb +83 -0
  18. data/lib/cb/criteria/job/details.rb +11 -0
  19. data/lib/cb/criteria/job/search.rb +25 -0
  20. data/lib/cb/criteria/spot/retrieve.rb +12 -0
  21. data/lib/cb/exceptions.rb +2 -1
  22. data/lib/cb/models/implementations/application.rb +92 -0
  23. data/lib/cb/models/implementations/application_external.rb +28 -0
  24. data/lib/cb/models/implementations/application_schema.rb +75 -0
  25. data/lib/cb/models/implementations/branding/media.rb +14 -14
  26. data/lib/cb/models/implementations/branding/section.rb +14 -15
  27. data/lib/cb/models/implementations/branding/style.rb +10 -10
  28. data/lib/cb/models/implementations/branding/styles/base.rb +12 -10
  29. data/lib/cb/models/implementations/branding/styles/buttons.rb +7 -6
  30. data/lib/cb/models/implementations/branding/styles/company_info.rb +14 -12
  31. data/lib/cb/models/implementations/branding/styles/container.rb +7 -6
  32. data/lib/cb/models/implementations/branding/styles/content.rb +7 -5
  33. data/lib/cb/models/implementations/branding/styles/css_adapter.rb +39 -41
  34. data/lib/cb/models/implementations/branding/styles/headings.rb +7 -5
  35. data/lib/cb/models/implementations/branding/styles/job_details.rb +12 -11
  36. data/lib/cb/models/implementations/branding/styles/page.rb +7 -5
  37. data/lib/cb/models/implementations/branding/widget.rb +9 -7
  38. data/lib/cb/models/implementations/category.rb +24 -0
  39. data/lib/cb/models/implementations/company.rb +135 -0
  40. data/lib/cb/models/implementations/education.rb +17 -0
  41. data/lib/cb/models/implementations/email_subscription.rb +17 -0
  42. data/lib/cb/models/implementations/employee_type.rb +13 -0
  43. data/lib/cb/models/implementations/job.rb +167 -0
  44. data/lib/cb/models/implementations/job_branding.rb +34 -0
  45. data/lib/cb/models/implementations/saved_search.rb +159 -0
  46. data/lib/cb/models/implementations/spot.rb +30 -0
  47. data/lib/cb/models/implementations/talent_network.rb +156 -0
  48. data/lib/cb/models/implementations/user.rb +58 -0
  49. data/lib/cb/responses/anonymous_saved_search/create.rb +36 -0
  50. data/lib/cb/responses/anonymous_saved_search/delete.rb +23 -0
  51. data/lib/cb/responses/api_response.rb +64 -0
  52. data/lib/cb/responses/employee_types/search.rb +48 -0
  53. data/lib/cb/responses/errors.rb +47 -0
  54. data/lib/cb/responses/metadata.rb +27 -0
  55. data/lib/cb/responses/saved_search/delete.rb +28 -0
  56. data/lib/cb/responses/saved_search/list.rb +43 -0
  57. data/lib/cb/responses/saved_search/singular.rb +50 -0
  58. data/lib/cb/responses/spot/retrieve_response.rb +31 -20
  59. data/lib/cb/responses/timing.rb +37 -0
  60. data/lib/cb/utils/api.rb +2 -2
  61. data/lib/cb/utils/response_array_extractor.rb +14 -4
  62. data/lib/cb/version.rb +1 -1
  63. metadata +114 -69
  64. data/lib/cb/clients/anon_saved_search_api.rb +0 -41
  65. data/lib/cb/clients/application_api.rb +0 -78
  66. data/lib/cb/clients/application_external_api.rb +0 -30
  67. data/lib/cb/clients/category_api.rb +0 -51
  68. data/lib/cb/clients/company_api.rb +0 -39
  69. data/lib/cb/clients/education_api.rb +0 -37
  70. data/lib/cb/clients/email_subscription_api.rb +0 -68
  71. data/lib/cb/clients/employee_types_api.rb +0 -48
  72. data/lib/cb/clients/job_api.rb +0 -70
  73. data/lib/cb/clients/job_branding_api.rb +0 -24
  74. data/lib/cb/clients/recommendation_api.rb +0 -98
  75. data/lib/cb/clients/resume_api.rb +0 -185
  76. data/lib/cb/clients/saved_search_api.rb +0 -139
  77. data/lib/cb/clients/spot_api.rb +0 -25
  78. data/lib/cb/clients/talent_network_api.rb +0 -70
  79. data/lib/cb/clients/user_api.rb +0 -118
  80. data/lib/cb/criteria/job_details_criteria.rb +0 -11
  81. data/lib/cb/criteria/job_search_criteria.rb +0 -29
  82. data/lib/cb/criteria/spot_retrieve_criteria.rb +0 -12
  83. data/lib/cb/models/implementations/cb_application.rb +0 -91
  84. data/lib/cb/models/implementations/cb_application_external.rb +0 -31
  85. data/lib/cb/models/implementations/cb_application_schema.rb +0 -78
  86. data/lib/cb/models/implementations/cb_category.rb +0 -22
  87. data/lib/cb/models/implementations/cb_company.rb +0 -133
  88. data/lib/cb/models/implementations/cb_education.rb +0 -25
  89. data/lib/cb/models/implementations/cb_email_subscription.rb +0 -19
  90. data/lib/cb/models/implementations/cb_employee_type.rb +0 -12
  91. data/lib/cb/models/implementations/cb_job.rb +0 -175
  92. data/lib/cb/models/implementations/cb_job_branding.rb +0 -33
  93. data/lib/cb/models/implementations/cb_resume.rb +0 -221
  94. data/lib/cb/models/implementations/cb_saved_search.rb +0 -228
  95. data/lib/cb/models/implementations/cb_spot.rb +0 -32
  96. data/lib/cb/models/implementations/cb_talent_network.rb +0 -155
  97. data/lib/cb/models/implementations/cb_user.rb +0 -56
  98. data/lib/cb/responses/raw_api_response.rb +0 -34
data/lib/cb.rb CHANGED
@@ -2,117 +2,25 @@ require 'cb/config'
2
2
  require 'cb/models/implementations/branding/styles/base'
3
3
  require 'cb/models/implementations/branding/styles/css_adapter'
4
4
  require 'cb/exceptions'
5
+ require 'cb/convenience'
5
6
 
6
7
  def require_directory(relative_path)
7
8
  Dir[File.dirname(__FILE__) + relative_path].each { |file| require file }
8
9
  end
9
10
 
10
- required_paths = %w(/cb/utils/*.rb /cb/clients/*.rb /cb/criteria/*.rb /cb/models/*.rb
11
- /cb/models/**/*.rb /cb/responses/*.rb /cb/responses/**/*.rb)
12
- required_paths.each { |path| require_directory path }
11
+ %w(/cb/utils/*.rb /cb/clients/**/*.rb /cb/criteria/**/*.rb /cb/models/**.rb
12
+ /cb/models/**/*.rb /cb/responses/*.rb /cb/responses/**/*.rb).each { |path| require_directory path }
13
13
 
14
14
  module Cb
15
- def self.configure
15
+ extend Convenience::ClassMethods
16
+
17
+ def self.configure
16
18
  yield configuration
17
19
  end
18
20
 
19
21
  def self.configuration
20
22
  @configuration ||= Cb::Config.new
21
23
  @configuration.set_default_api_uris
22
-
23
- return @configuration
24
- end
25
-
26
- # Convenience methods, in case you're lazy... like me :)
27
- ###############################################################
28
-
29
- #Cb::JobApi
30
- def self.job
31
- Cb::JobApi
32
- end
33
-
34
- #Cb::JobSearchCriteria
35
- def self.job_search_criteria
36
- Cb::JobSearchCriteria.new
37
- end
38
-
39
- #Cb::JobDetailsCriteria
40
- def self.job_detail_criteria
41
- Cb::JobDetailsCriteria.new
42
- end
43
-
44
- #Cb::CategoryApi
45
- def self.category
46
- Cb::CategoryApi
47
- end
48
-
49
- #Cb::CompanyApi
50
- def self.company
51
- Cb::CompanyApi
52
- end
53
-
54
- #Cb::EducationApi
55
- def self.education_code
56
- Cb::EducationApi
57
- end
58
-
59
- #Cb::RecommendationApi
60
- def self.recommendation
61
- Cb::RecommendationApi
62
- end
63
-
64
- #Cb::ResumeApi
65
- def self.resume
66
- Cb::ResumeApi
67
- end
68
-
69
- #Cb::ApplicationApi
70
- def self.application
71
- Cb::ApplicationApi
72
- end
73
-
74
- #Cb::ApplicationExternalApi
75
- def self.application_external
76
- Cb::ApplicationExternalApi
77
- end
78
-
79
- #Cb::Utils::Country
80
- def self.country
81
- Cb::Utils::Country
82
- end
83
-
84
- #Cb::UserApi
85
- def self.user
86
- Cb::UserApi
87
- end
88
-
89
- #Cb::JobBrandingApi
90
- def self.job_branding
91
- Cb::JobBrandingApi
92
- end
93
-
94
- #Cb::EmailSubscriptionApi
95
- def self.email_subscription
96
- Cb::EmailSubscriptionApi
97
- end
98
-
99
- #Cb::SavedSearchApi
100
- def self.saved_search_api
101
- Cb::SavedSearchApi
102
- end
103
-
104
- #Cb::TalentNetworkApi
105
- def self.talent_network_api
106
- Cb::TalentNetworkApi
107
- end
108
-
109
- #Cb::AnonSavedSearchApi
110
- def self.anon_saved_search_api
111
- Cb::AnonSavedSearchApi
112
- end
113
-
114
- #Cb::ApiClients::Spot
115
- def self.spot
116
- Cb::ApiClients::Spot
24
+ @configuration
117
25
  end
118
26
  end
@@ -0,0 +1,42 @@
1
+ module Cb
2
+ module Clients
3
+
4
+ class AnonSavedSearch
5
+ def create(*args)
6
+ body = new_model(*args).create_anon_to_xml
7
+ json = cb_client.cb_post(create_uri, :body => body)
8
+ Responses::AnonymousSavedSearch::Create.new(json)
9
+ end
10
+
11
+ def delete(*args)
12
+ body = new_model(*args).delete_anon_to_xml
13
+ json = cb_client.cb_post(delete_uri, :body => body)
14
+ Responses::AnonymousSavedSearch::Delete.new(json)
15
+ end
16
+
17
+ private
18
+
19
+ def new_model(*args)
20
+ return args.first if args.respond_to?(:[]) && args.first.is_a?(Models::SavedSearch)
21
+ Models::SavedSearch.new(extract_args(*args))
22
+ end
23
+
24
+ def extract_args(*args)
25
+ args.is_a?(Array) && args.count == 1 ? args[0] : args
26
+ end
27
+
28
+ def create_uri
29
+ Cb.configuration.uri_anon_saved_search_create
30
+ end
31
+
32
+ def delete_uri
33
+ Cb.configuration.uri_anon_saved_search_delete
34
+ end
35
+
36
+ def cb_client
37
+ @cb_client ||= Cb.api_client.new
38
+ end
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,53 @@
1
+ require 'json'
2
+
3
+ module Cb
4
+ module Clients
5
+ class Application
6
+
7
+ def self.for_job(job)
8
+ job.is_a?(Cb::Models::Job) ? did = job.did : did = job
9
+ my_api = Cb::Utils::Api.new
10
+ json_hash = my_api.cb_get(Cb.configuration.uri_application, :query => {:JobDID => did})
11
+
12
+ if json_hash.has_key?('ResponseBlankApplication')
13
+ if json_hash['ResponseBlankApplication'].has_key?('BlankApplication')
14
+ app = Cb::Models::ApplicationSchema.new(json_hash['ResponseBlankApplication']['BlankApplication'])
15
+ end
16
+
17
+ my_api.append_api_responses(app, json_hash['ResponseBlankApplication'])
18
+ end
19
+
20
+ my_api.append_api_responses(app, json_hash)
21
+ end
22
+
23
+ def self.submit_registered_app(app)
24
+ return send_to_api(Cb.configuration.uri_application_registered, app)
25
+ end
26
+
27
+ def self.submit_app(app)
28
+ return send_to_api(Cb.configuration.uri_application_submit, app)
29
+ end
30
+
31
+ def self.send_to_api(uri, app)
32
+ raise Cb::IncomingParamIsWrongTypeException unless app.is_a?(Cb::Models::Application)
33
+
34
+ my_api = Cb::Utils::Api.new
35
+ json_hash = my_api.cb_post("#{uri}?ipath=#{app.ipath}", :body => app.to_xml)
36
+
37
+ if json_hash.has_key? 'ResponseApplication'
38
+ if json_hash['ResponseApplication'].has_key? 'RedirectURL'
39
+ app.redirect_url = json_hash['ResponseApplication']['RedirectURL']
40
+ else
41
+ app.redirect_url = ''
42
+ end
43
+
44
+ my_api.append_api_responses(app, json_hash['ResponseApplication'])
45
+ else
46
+ app.redirect_url = ''
47
+ end
48
+
49
+ my_api.append_api_responses(app, json_hash)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,24 @@
1
+ require 'json'
2
+
3
+ module Cb
4
+ module Clients
5
+ class ApplicationExternal
6
+
7
+ def self.submit_app(app)
8
+ raise Cb::IncomingParamIsWrongTypeException unless app.is_a?(Cb::Models::ApplicationExternal)
9
+
10
+ my_api = Cb::Utils::Api.new
11
+ xml_hash = my_api.cb_post(Cb.configuration.uri_application_external, :body => app.to_xml)
12
+
13
+ if xml_hash.has_key? 'ApplyUrl'
14
+ app.apply_url = xml_hash['ApplyUrl']
15
+ else
16
+ app.apply_url = ''
17
+ end
18
+
19
+ my_api.append_api_responses(app, xml_hash)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,49 @@
1
+ require "json"
2
+
3
+ module Cb
4
+ module Clients
5
+ class Category
6
+
7
+ def self.search
8
+ my_api = Cb::Utils::Api.new
9
+ json_hash = my_api.cb_get(Cb.configuration.uri_job_category_search)
10
+ categoryList = []
11
+
12
+ if json_hash.has_key?('ResponseCategories')
13
+ if json_hash['ResponseCategories'].has_key?('Categories')
14
+ json_hash['ResponseCategories']['Categories']['Category'].each do |cat|
15
+ categoryList << Models::Category.new(cat)
16
+ end
17
+ end
18
+
19
+ my_api.append_api_responses(categoryList, json_hash['ResponseCategories'])
20
+ end
21
+
22
+ my_api.append_api_responses(categoryList, json_hash)
23
+ end
24
+
25
+ def self.search_by_host_site(host_site)
26
+ my_api = Cb::Utils::Api.new
27
+ json_hash = my_api.cb_get(Cb.configuration.uri_job_category_search, :query => {:CountryCode => host_site})
28
+ categoryList = []
29
+
30
+ if json_hash.has_key?('ResponseCategories')
31
+ if json_hash['ResponseCategories'].has_key?('Categories')
32
+ if json_hash['ResponseCategories']['Categories']['Category'].is_a?(Array)
33
+ json_hash['ResponseCategories']['Categories']['Category'].each do |cat|
34
+ categoryList << Models::Category.new(cat)
35
+ end
36
+ elsif json_hash['ResponseCategories']['Categories']['Category'].is_a?(Hash) && json_hash.length < 2
37
+ categoryList << Models::Category.new(json_hash['ResponseCategories']['Categories']['Category'])
38
+ end
39
+ end
40
+
41
+ my_api.append_api_responses(categoryList, json_hash['ResponseCategories'])
42
+ end
43
+
44
+ my_api.append_api_responses(categoryList, json_hash)
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,34 @@
1
+ require 'json'
2
+
3
+ module Cb
4
+ module Clients
5
+ class Company
6
+
7
+ def self.find_by_did(did)
8
+ my_api = Cb::Utils::Api.new
9
+ json_hash = my_api.cb_get(Cb.configuration.uri_company_find, :query => {:CompanyDID => did, :hostsite=> Cb.configuration.host_site})
10
+
11
+ if json_hash.has_key?('Results')
12
+ if json_hash['Results'].has_key?('CompanyProfileDetail')
13
+ company = Models::Company.new(json_hash['Results']['CompanyProfileDetail'])
14
+ end
15
+ my_api.append_api_responses(company, json_hash['Results'])
16
+ end
17
+
18
+ my_api.append_api_responses(company, json_hash)
19
+ end
20
+
21
+ def self.find_for(obj)
22
+ if obj.is_a?(String)
23
+ did = obj
24
+ elsif obj.is_a?(Cb::Models::Job)
25
+ did = obj.company_did
26
+ end
27
+ did ||= ''
28
+
29
+ find_by_did did unless did.empty?
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,28 @@
1
+ require 'json'
2
+
3
+ module Cb
4
+ module Clients
5
+ class Education
6
+
7
+ def self.get_for(country)
8
+ Cb::Utils::Country.is_valid? country ? country : 'US'
9
+ my_api = Cb::Utils::Api.new
10
+ json_hash = my_api.cb_get(Cb.configuration.uri_education_code, :query => {:countrycode => country})
11
+
12
+ codes = []
13
+ if json_hash.has_key?('ResponseEducationCodes')
14
+ if json_hash['ResponseEducationCodes'].has_key?('EducationCodes') &&
15
+ json_hash['ResponseEducationCodes']['EducationCodes'].has_key?('Education')
16
+ json_hash['ResponseEducationCodes']['EducationCodes']['Education'].each do | education |
17
+ codes << Cb::Models::Education.new(education)
18
+ end
19
+ end
20
+ my_api.append_api_responses(codes, json_hash['ResponseEducationCodes'])
21
+ end
22
+
23
+ my_api.append_api_responses(codes, json_hash)
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,55 @@
1
+ require 'json'
2
+
3
+ module Cb
4
+ module Clients
5
+ class EmailSubscription
6
+
7
+ def self.retrieve_by_did(did, host_site = '')
8
+ my_api = Cb::Utils::Api.new
9
+ json_hash = my_api.cb_get(Cb.configuration.uri_subscription_retrieve, :query => {:ExternalID => did, :Hostsite => host_site})
10
+
11
+ if json_hash.has_key?('SubscriptionValues') && !json_hash['SubscriptionValues'].nil?
12
+ subscription = Models::EmailSubscription.new(json_hash['SubscriptionValues'])
13
+ my_api.append_api_responses(subscription, json_hash['SubscriptionValues'])
14
+ end
15
+ my_api.append_api_responses(subscription, json_hash)
16
+ end
17
+
18
+ def self.modify_subscription ext_id, host_site, career_resources, product_sponsor_info, applicant_survey_invites, job_recs, unsubscribe_all
19
+ if unsubscribe_all && unsubscribe_all != 'false'
20
+ career_resources = product_sponsor_info = applicant_survey_invites = job_recs = false.to_s
21
+ end
22
+
23
+ career_resources = career_resources.nil? ? 'false' : career_resources
24
+ product_sponsor_info = product_sponsor_info.nil? ? 'false' : product_sponsor_info
25
+ applicant_survey_invites = applicant_survey_invites.nil? ? 'false' : applicant_survey_invites
26
+ job_recs = job_recs.nil? ? 'false' : job_recs
27
+ unsubscribe_all = unsubscribe_all.nil? ? 'false' : unsubscribe_all
28
+
29
+ my_api = Cb::Utils::Api.new
30
+
31
+ xml_body = "<Request>"
32
+ xml_body += "<DeveloperKey>" + Cb.configuration.dev_key.to_s + "</DeveloperKey>"
33
+ xml_body += "<ExternalID>" + ext_id.to_s + "</ExternalID>"
34
+ xml_body += "<Hostsite>" + host_site.to_s + "</Hostsite>"
35
+ xml_body += "<CareerResources>" + career_resources.to_s + "</CareerResources>"
36
+ xml_body += "<ProductSponsorInfo>" + product_sponsor_info.to_s + "</ProductSponsorInfo>"
37
+ xml_body += "<ApplicantSurveyInvites>" + applicant_survey_invites.to_s + "</ApplicantSurveyInvites>"
38
+ xml_body += "<JobRecs>" + job_recs.to_s + "</JobRecs>"
39
+ xml_body += "<UnsubscribeAll>" + unsubscribe_all.to_s + "</UnsubscribeAll>"
40
+ xml_body += "</Request>"
41
+
42
+
43
+ json_hash = my_api.cb_post(Cb.configuration.uri_subscription_modify,
44
+ :body => xml_body)
45
+
46
+ if json_hash.has_key?('SubscriptionValues') && !json_hash['SubscriptionValues'].nil?
47
+ subscription = Models::EmailSubscription.new(json_hash['SubscriptionValues'])
48
+ my_api.append_api_responses(subscription, json_hash['SubscriptionValues'])
49
+ end
50
+ my_api.append_api_responses(subscription, json_hash)
51
+ end
52
+
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,31 @@
1
+ module Cb
2
+ module Clients
3
+
4
+ class EmployeeTypes
5
+ def search
6
+ json = cb_client.cb_get(endpoint)
7
+ new_response_object(json)
8
+ end
9
+
10
+ def search_by_hostsite(host_site)
11
+ json = cb_client.cb_get(endpoint, :query => { :CountryCode => host_site })
12
+ new_response_object(json)
13
+ end
14
+
15
+ private
16
+
17
+ def cb_client
18
+ @client ||= Cb.api_client.new
19
+ end
20
+
21
+ def endpoint
22
+ Cb.configuration.uri_employee_types
23
+ end
24
+
25
+ def new_response_object(json_response)
26
+ Responses::EmployeeTypes::Search.new(json_response)
27
+ end
28
+ end
29
+
30
+ end
31
+ end