cb-api 0.0.15 → 0.1.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.
data/lib/cb.rb CHANGED
@@ -1,8 +1,15 @@
1
+ module Cb
2
+ module Utils
3
+ module FluidAttributes
4
+ end
5
+ end
6
+ end
7
+
1
8
  require 'cb/config'
2
9
  Dir[File.dirname(__FILE__) + '/cb/utils/*.rb'].each {| file| require file }
3
10
  Dir[File.dirname(__FILE__) + '/cb/clients/*.rb'].each {| file| require file }
11
+ Dir[File.dirname(__FILE__) + '/cb/criteria/*.rb'].each {| file| require file }
4
12
  Dir[File.dirname(__FILE__) + '/cb/models/*.rb'].each {| file| require file }
5
- require 'cb/job_search_criteria'
6
13
 
7
14
  module Cb
8
15
  def self.configure
@@ -14,10 +14,10 @@ module Cb
14
14
  my_api = Cb::Utils::Api.new()
15
15
  cb_response = my_api.cb_get(Cb.configuration.uri_application, :query => {:JobDID => did})
16
16
  json_hash = JSON.parse(cb_response.response.body)
17
- app_info = CbApp.new(json_hash['ResponseBlankApplication']['BlankApplication'])
18
- my_api.append_api_responses(app_info, json_hash['ResponseBlankApplication'])
17
+ app = Cb::CbApplicationSchema.new(json_hash['ResponseBlankApplication']['BlankApplication'])
18
+ my_api.append_api_responses(app, json_hash['ResponseBlankApplication'])
19
19
 
20
- return app_info
20
+ return app
21
21
  end
22
22
 
23
23
  #############################################################
@@ -28,7 +28,7 @@ module Cb
28
28
  #############################################################
29
29
  def self.submit_registered_app(app)
30
30
  my_api = Cb::Utils::Api.new()
31
- cb_response = my_api.cb_post(Cb.configuration.uri_application_registered, :body => application_xml)
31
+ cb_response = my_api.cb_post(Cb.configuration.uri_application_registered, :body => app)
32
32
 
33
33
  json_hash = JSON.parse(cb_response.response.body)
34
34
  begin
@@ -49,7 +49,7 @@ module Cb
49
49
  #############################################################
50
50
  def self.submit_app(app)
51
51
  my_api = Cb::Utils::Api.new()
52
- cb_response = my_api.cb_post(Cb.configuration.uri_application_submit, :body => application_xml)
52
+ cb_response = my_api.cb_post(Cb.configuration.uri_application_submit, :body => app)
53
53
  json_hash = cb_response.parsed_response
54
54
  status = json_hash['ResponseApplication']['ApplicationStatus'] == 'Complete (Test)'
55
55
  end
@@ -38,7 +38,6 @@ module Cb
38
38
 
39
39
  cb_response = my_api.cb_get(Cb.configuration.uri_job_find, :query => params)
40
40
  json_hash = JSON.parse(cb_response.response.body)
41
-
42
41
  job = CbJob.new(json_hash['ResponseJob']['Job'])
43
42
  my_api.append_api_responses(job, json_hash['ResponseJob'])
44
43
 
@@ -51,15 +50,4 @@ module Cb
51
50
  return find_by_criteria(criteria)
52
51
  end
53
52
  end # JobApi
54
-
55
- class JobDetailsCriteria
56
- extend Cb::Utils::FluidAttributes
57
-
58
- fluid_attr_accessor :did, :show_job_skin, :site_id, :lhs, :cobrand, :show_apply_requirements
59
-
60
- def find
61
- Cb.job.find_by_did(self.did, self)
62
- end
63
- end
64
-
65
53
  end # Cb
@@ -0,0 +1,11 @@
1
+ module Cb
2
+ class JobDetailsCriteria
3
+ extend Cb::Utils::FluidAttributes
4
+
5
+ fluid_attr_accessor :did, :show_job_skin, :site_id, :lhs, :cobrand, :show_apply_requirements
6
+
7
+ def find
8
+ Cb.job.find_by_criteria(self)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ module Cb
2
+ class CbApplication
3
+ attr_accessor :job_did, :site_id, :co_brand, :test,
4
+ :resume_file_name, :resume_file,
5
+ :answers
6
+
7
+ def initialize(job_did, site_id = '', co_brand = '', resume_file_name = '', resume = nil, test = false)
8
+ @job_did = job_did
9
+ @site_id = site_id
10
+ @co_brand = co_brand
11
+ @test = test
12
+ @resume_file_name = resume_file_name
13
+ @resume = resume
14
+ @answers = []
15
+ end
16
+
17
+ def add_answer(id, text)
18
+ @answers << CbApplication::CbAnswer.new(id, text)
19
+ end
20
+
21
+ def to_xml
22
+
23
+ end
24
+ end # CbApplication
25
+
26
+ ############################################################
27
+ class CbApplication::CbAnswer
28
+ attr_accessor :id, :text
29
+
30
+ def initialize(id, text)
31
+ @id = id
32
+ @text = text
33
+ end
34
+ end # CbAnswer
35
+ end # Cb
@@ -1,13 +1,13 @@
1
1
  module Cb
2
- class CbApp
2
+ #################################################################
3
+ ## This general purpose object stores anything having to do with
4
+ ## an application. The API objects dealing with application,
5
+ ## will populate one or many of this object.
6
+ #################################################################
7
+ class CbApplicationSchema
3
8
  attr_accessor :did, :title, :requirements,
4
9
  :apply_url, :submit_service_url, :is_shared_apply,
5
10
  :total_questions, :total_required_questions, :questions
6
- #################################################################
7
- ## This general purpose object stores anything having to do with
8
- ## an application. The API objects dealing with application,
9
- ## will populate one or many of this object.
10
- #################################################################
11
11
 
12
12
  def initialize(args = {})
13
13
  return if args.nil?
@@ -25,22 +25,23 @@ module Cb
25
25
  # Question related
26
26
  @total_questions = args['TotalQuestions'] || ''
27
27
  @total_required_questions = args['TotalRequiredQuestions'] || ''
28
- @total_questions = @total_questions.to_i if Cb::Utils::Api.is_numeric? @total_questions
28
+ @total_questions = @total_questions.to_i if Cb::Utils::Api.is_numeric? @total_questions
29
29
  @total_required_questions = @total_required_questions.to_i if Cb::Utils::Api.is_numeric? @total_required_questions
30
30
 
31
31
  @questions = []
32
32
  if args.has_key?('Questions')
33
33
  unless args['Questions'].empty?
34
34
  args['Questions']['Question'].each do | qq |
35
- @questions << CbApp::CbQuestion.new(qq)
35
+ @questions << CbApplicationSchema::CbQuestionSchema.new(qq)
36
36
  end
37
37
  end
38
38
  end
39
39
  end # Initialize
40
- end # CbApp
40
+ end # CbApplicationSchema
41
41
 
42
- class CbApp::CbQuestion
43
- attr_accessor :id, :type, :required, :format, :text
42
+ #################################################################
43
+ class CbApplicationSchema::CbQuestionSchema
44
+ attr_accessor :id, :type, :required, :format, :text, :answers
44
45
 
45
46
  def initialize(args = {})
46
47
  return if args.nil?
@@ -50,24 +51,28 @@ module Cb
50
51
  @required = (args['IsRequired'].downcase == 'true')
51
52
  @format = args['ExpectedResponseFormat'] || ''
52
53
  @text = args['QuestionText'] || ''
54
+
55
+ @answers = []
56
+ if args.has_key?('Answers')
57
+ unless args['Answers'].empty?
58
+ args['Answers']['Answer'].each do | aa |
59
+ @answers << CbApplicationSchema::CbAnswerSchema.new(aa)
60
+ end
61
+ end
62
+ end
53
63
  end
54
- end # CbQuestion
64
+ end # CbQuestionSchema
55
65
 
56
- class CbApp::CbAnswer
66
+ #################################################################
67
+ class CbApplicationSchema::CbAnswerSchema
68
+ attr_accessor :question_id, :id, :text
57
69
 
70
+ def initialize(args = {})
71
+ return if args.nil?
58
72
 
59
- end # CbAnswer
60
- end
61
- #
62
- #<Answers>
63
- #<Answer>
64
- #<QuestionID>MeetsRequirements</QuestionID>
65
- # <AnswerID>Yes</AnswerID>
66
- #<AnswerText>Yes</AnswerText>
67
- # </Answer>
68
- #<Answer>
69
- #<QuestionID>MeetsRequirements</QuestionID>
70
- # <AnswerID>No</AnswerID>
71
- #<AnswerText>No</AnswerText>
72
- # </Answer>
73
- #</Answers>
73
+ @question_id = args['QuestionID']
74
+ @id = args['AnswerID']
75
+ @text = args['AnswerText']
76
+ end
77
+ end # CbAnswerSchema
78
+ end
@@ -1,12 +1,18 @@
1
1
  module Cb
2
2
  class CbJob
3
- attr_accessor :did, :title, :pay, :job_skin,
3
+ attr_accessor :did, :title, :job_skin, :pay, :pay_per, :commission, :bonus,
4
+ :categories, :category_codes, :degree_required, :experience_required, :travel_required,
5
+ :industry_codes, :manages_others_code,
6
+ :contact_email_url, :contact_fax, :contact_name, :contact_phone,
4
7
  :company_name, :company_did, :company_details_url, :company_image_url, :company,
5
- :description_teaser, :location, :distance, :latitude, :longitude,
8
+ :description_teaser, :location, :distance, :latitude, :longitude, :location_formatted,
6
9
  :description, :requirements, :employment_type,
7
10
  :details_url, :service_url, :similar_jobs_url, :apply_url,
8
11
  :begin_date, :end_date, :posted_date,
9
- :relevancy, :state, :city
12
+ :relevancy, :state, :city, :zip
13
+
14
+ attr_writer :external_application, :relocation_covered, :manages_others, :is_screener_apply,
15
+ :is_shared_job
10
16
 
11
17
  ##############################################################
12
18
  ## This general purpose object stores anything having to do
@@ -22,8 +28,14 @@ module Cb
22
28
  @employment_type = args['EmploymentType'] || ''
23
29
  @latitude = args['LocationLatitude'] || ''
24
30
  @longitude = args['LocationLongitude'] || ''
25
- @pay = args['Pay'] || ''
26
- @job_skin = args['JobSkin'] || ''
31
+ @location_formatted = args['LocationFormatted'] || ''
32
+ @job_skin = args.has_key?("JobSkin") && !args["JobSkin"].nil? ? args['JobSkin']['#cdata-section'] : ''
33
+
34
+ # Compensation
35
+ @pay = args['PayHighLowFormatted'] || ''
36
+ @pay_per = args['PayPer'] || ''
37
+ @commission = args.has_key?("PayCommission") && !args["PayCommission"].nil? ? args['PayCommission']['Money']['FormattedAmount'] : ''
38
+ @bonus = args.has_key?("PayBonus") && !args["PayBonus"].nil? ? args['PayBonus']['Money']['FormattedAmount'] : ''
27
39
 
28
40
  # Job Search related
29
41
  @description_teaser = args['DescriptionTeaser'] || ''
@@ -34,12 +46,34 @@ module Cb
34
46
  @location = args['Location'] || ''
35
47
  @similar_jobs_url = args['SimilarJobsURL'] || ''
36
48
 
49
+ # Summary
50
+ @categories = args['Categories'] || ''
51
+ @category_codes = args['CategoriesCodes'] || ''
52
+ @degree_required = args['DegreeRequiredCode'] || ''
53
+ @experience_required = args['ExperienceRequiredCode'] || ''
54
+ @travel_required = args['TravelRequiredCode'] || ''
55
+ @relocation_covered = args['RelocationCovered'] || ''
56
+ @industry_codes = args['IndustryCodes'] || ''
57
+ @manages_others = args['ManagesOthers'] || ''
58
+ @manages_others_code = args['ManagesOthersCode'] || ''
59
+
60
+ # Contact Info
61
+ @contact_email_url = args['ContactInfoEmailURL'] || ''
62
+ @contact_fax = args['ContactInfoFax'] || ''
63
+ @contact_name = args['ContactInfoName'] || ''
64
+ @contact_phone = args['ContactInfoPhone'] || ''
65
+
37
66
  # Job Details related
38
67
  @description = args['Description'] || args['JobDescription'] || ''
39
68
  @requirements = args['JobRequirements'] || ''
40
69
  @begin_date = args['BeginDate'] || ''
41
70
  @end_date = args['EndDate'] || ''
71
+
72
+ # Application
42
73
  @apply_url = args['ApplyURL'] || ''
74
+ @external_application = args['ExternalApplication'] || ''
75
+ @is_screener_apply = args['IsScreenerApply'] || ''
76
+ @is_shared_job = args['IsSharedJob'] || ''
43
77
 
44
78
  # Company related
45
79
  @company_name = args['Company'] || ''
@@ -49,8 +83,9 @@ module Cb
49
83
 
50
84
  # Recommendations related
51
85
  @relevancy = args['Relevancy'] || ''
52
- @state = args['Location']['State'] unless args['Location'].nil? || args['Location']['State'].nil?
53
- @city = args['Location']['City'] unless args['Location'].nil? || args['Location']['City'].nil?
86
+ @state = args['LocationState'] || ''
87
+ @city = args['LocationCity'] || ''
88
+ @zip = args['LocationPostalCode'] || ''
54
89
  @company_name = args['Company']['CompanyName'] unless args['Company'].nil? || args['Company']['CompanyName'].nil?
55
90
  @company_details_url = args['Company']['CompanyDetailsURL'] unless args['Company'].nil? || args['Company']['CompanyDetailsURL'].nil?
56
91
  end
@@ -64,5 +99,25 @@ module Cb
64
99
  return @company
65
100
  end
66
101
  end
102
+
103
+ def external_application?
104
+ @external_application.downcase == 'true' ? true : false
105
+ end
106
+
107
+ def relocation_covered?
108
+ @relocation_covered.downcase == 'true' ? true : false
109
+ end
110
+
111
+ def manages_others?
112
+ @manages_others.downcase == 'true' ? true : false
113
+ end
114
+
115
+ def screener_apply?
116
+ @is_screener_apply.downcase == 'true' ? true : false
117
+ end
118
+
119
+ def shared_job?
120
+ @is_shared_job.downcase == 'true' ? true : false
121
+ end
67
122
  end
68
123
  end
@@ -1,3 +1,3 @@
1
1
  module Cb
2
- VERSION = '0.0.15'
2
+ VERSION = '0.1.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: 0.0.15
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-05-09 00:00:00.000000000 Z
14
+ date: 2013-05-13 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: httparty
@@ -62,14 +62,15 @@ files:
62
62
  - lib/cb/clients/job_api.rb
63
63
  - lib/cb/clients/recommendation_api.rb
64
64
  - lib/cb/config.rb
65
- - lib/cb/job_search_criteria.rb
66
- - lib/cb/models/cb_app.rb
65
+ - lib/cb/criteria/job_details_criteria.rb
66
+ - lib/cb/criteria/job_search_criteria.rb
67
+ - lib/cb/models/cb_application.rb
68
+ - lib/cb/models/cb_application_schema.rb
67
69
  - lib/cb/models/cb_category.rb
68
70
  - lib/cb/models/cb_company.rb
69
71
  - lib/cb/models/cb_education.rb
70
72
  - lib/cb/models/cb_employee_type.rb
71
73
  - lib/cb/models/cb_job.rb
72
- - lib/cb/models/cb_job_application.rb
73
74
  - lib/cb/utils/api.rb
74
75
  - lib/cb/utils/country.rb
75
76
  - lib/cb/utils/fluid_attributes.rb
@@ -1,29 +0,0 @@
1
- module Cb
2
- class CbJobApplication
3
- attr_accessor :job_did, :site_id, :co_brand, :apply_url, :title, :total_questions,
4
- :total_required_questions, :questions, :submit_service_url
5
-
6
- ##############################################################
7
- ## This general purpose object stores anything having to do
8
- ## with an application. The API objects dealing with application,
9
- ## will populate this object.
10
- ##############################################################
11
- def initialize(args = {})
12
- return if args.nil?
13
-
14
- @job_did = args['JobDID'] || ''
15
- @site_id = args['SiteID'] || ''
16
- @co_brand = args['CoBrand'] || ''
17
- @apply_url = args['ApplyURL'] || ''
18
- @title = args['JobTitle'] || ''
19
- @total_questions = args['TotalQuestions'] || ''
20
- @total_required_questions = args['TotalRequiredQuestions'] || ''
21
- @questions = args['Questions'] || ''
22
- @submit_service_url = args['ApplicationSubmitServiceURL'] || ''
23
-
24
- #TODO
25
- # Questions needs to be an array of data containers (of question)
26
-
27
- end
28
- end # CbJobApplication
29
- end # Cb