cb-api 0.0.9 → 0.0.14

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.
@@ -1,22 +1,24 @@
1
1
  require 'json'
2
- require 'nokogiri'
3
2
 
4
3
  module Cb
5
4
  class ApplicationApi
6
- #############################################################
5
+ #############################################################
7
6
  ## Get an application for a job
7
+ ## Takes in either a Cb::CbJob, or a string (which should contain a did)
8
8
  ##
9
9
  ## For detailed information around this API please visit:
10
10
  ## http://api.careerbuilder.com/ApplicationInfo.aspx
11
11
  #############################################################
12
- def self.for_job(did)
13
- my_api = Cb::Utils::Api.new()
14
- cb_response = my_api.cb_get(Cb.configuration.uri_application, :query => {:JobDID => did})
15
- json_hash = JSON.parse(cb_response.response.body)
16
- app_info = CbApp.new(json_hash['ResponseBlankApplication']['BlankApplication']['Questions'])
17
- my_api.append_api_responses(app_info, json_hash['ResponseBlankApplication'])
18
- return {:json_hash => json_hash, :app_info => app_info}
19
- end
12
+ def self.for_job(job)
13
+ did = job.did if job.is_a?(Cb::CbJob) else did = job
14
+ my_api = Cb::Utils::Api.new()
15
+ cb_response = my_api.cb_get(Cb.configuration.uri_application, :query => {:JobDID => did})
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'])
19
+
20
+ return app_info
21
+ end
20
22
 
21
23
  #############################################################
22
24
  ## Submit a job application for a registered user
@@ -24,24 +26,20 @@ module Cb
24
26
  ## For detailed information around this API please visit:
25
27
  ## http://api.careerbuilder.com/ApplicationInfo.aspx
26
28
  #############################################################
29
+ def self.submit_registered_app(app)
30
+ my_api = Cb::Utils::Api.new()
31
+ cb_response = my_api.cb_post(Cb.configuration.uri_application_registered, :body => application_xml)
27
32
 
28
- def self.submit_registered_app(request_xml)
29
- my_api = Cb::Utils::Api.new()
30
- cb_response = my_api.cb_post(Cb.configuration.uri_application_registered, :body => request_xml)
31
-
32
- json_hash = JSON.parse(cb_response.response.body)
33
- status = false
34
- begin
35
- json_hash = JSON.parse(cb_response.response.body)
36
- if json_hash.empty? == false
37
- status = json_hash['ResponseApplication']['ApplicationStatus'] == 'Complete (Test)'
38
- end
39
- rescue
40
- status = false
41
- end
42
-
43
- return status
44
- end
33
+ json_hash = JSON.parse(cb_response.response.body)
34
+ begin
35
+ json_hash = JSON.parse(cb_response.response.body)
36
+ status = json_hash['ResponseApplication']['ApplicationStatus'] == 'Complete (Test)' unless json_hash.empty?
37
+ rescue
38
+ status = false
39
+ end
40
+
41
+ return status
42
+ end
45
43
 
46
44
  #############################################################
47
45
  ## Submit a job application
@@ -49,13 +47,11 @@ module Cb
49
47
  ## For detailed information around this API please visit:
50
48
  ## http://api.careerbuilder.com/ApplicationInfo.aspx
51
49
  #############################################################
52
-
53
- def self.submit_app(request_xml)
54
- my_api = Cb::Utils::Api.new()
55
- cb_response = my_api.cb_post(Cb.configuration.uri_application_submit, :body => request_xml)
56
- json_hash = cb_response.parsed_response
57
- status = json_hash['ResponseApplication']['ApplicationStatus'] == 'Complete (Test)'
58
-
59
- end
50
+ def self.submit_app(app)
51
+ my_api = Cb::Utils::Api.new()
52
+ cb_response = my_api.cb_post(Cb.configuration.uri_application_submit, :body => application_xml)
53
+ json_hash = cb_response.parsed_response
54
+ status = json_hash['ResponseApplication']['ApplicationStatus'] == 'Complete (Test)'
60
55
  end
56
+ end
61
57
  end
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'cb/Utils/fluid_attributes.rb'
2
3
 
3
4
  module Cb
4
5
  class JobApi
@@ -55,7 +56,7 @@ module Cb
55
56
  class JobDetailsCriteria
56
57
  extend Cb::Utils::FluidAttributes
57
58
 
58
- fluid_attr_accessor :did, :show_job_skin, :site_id, :cobrand, :show_apply_requirements
59
+ fluid_attr_accessor :did, :show_job_skin, :site_id, :lhs, :cobrand, :show_apply_requirements
59
60
 
60
61
  def find
61
62
  Cb.job.find_by_did(self.did, self)
@@ -1,13 +1,13 @@
1
1
  module Cb
2
2
  class Config
3
- attr_accessor :dev_key, :time_out, :use_json, :host_site,
3
+ attr_accessor :dev_key, :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,
7
7
  :uri_recommendation_for_job, :uri_recommendation_for_user,
8
8
  :uri_recommendation_for_company,
9
9
  :uri_application, :uri_application_submit,
10
- :uri_application_registered, :job_did
10
+ :uri_application_registered
11
11
 
12
12
  def initialize
13
13
  Cb::Utils::Country.inject_convenience_methods
@@ -46,8 +46,7 @@ module Cb
46
46
  :uri_recommendation_for_company => @uri_recommendation_for_company,
47
47
  :uri_application => @uri_application,
48
48
  :uri_application_submit => @uri_application_submit,
49
- :uri_application_registered => @uri_application_registered,
50
- :job_did => @job_did
49
+ :uri_application_registered => @uri_application_registered
51
50
  }
52
51
  end
53
52
 
@@ -57,6 +56,7 @@ module Cb
57
56
  def set_defaults
58
57
 
59
58
  @dev_key = 'ruby-cb-api' # Get a developer key at http://api.careerbuilder.com
59
+ @debug_api = false
60
60
  @time_out = 5
61
61
  @use_json = true
62
62
  @host_site = Cb.country.US
@@ -1,39 +1,73 @@
1
1
  module Cb
2
2
  class CbApp
3
- attr_accessor :response_blank_app, :blank_app, :did, :submit_service_url,
4
- :apply_url, :title,
5
- :total_questions, :total_required_questions,
6
- :question_id, :is_required, :question_type, :expected_response_format,
7
- :question_text
3
+ attr_accessor :did, :title, :requirements,
4
+ :apply_url, :submit_service_url, :is_shared_apply,
5
+ :total_questions, :total_required_questions, :questions
8
6
  #################################################################
9
7
  ## This general purpose object stores anything having to do with
10
- ## an application. The API objects dealing with application,
11
- ## will populate one or many of this object.
8
+ ## an application. The API objects dealing with application,
9
+ ## will populate one or many of this object.
12
10
  #################################################################
13
11
 
14
12
  def initialize(args = {})
15
-
16
- # App related
17
- @response_blank_app = args['ResponseBlankApplication'] || ''
18
- @blank_app = args['BlankApplication'] || ''
13
+ return if args.nil?
19
14
 
20
15
  # Job Info related
21
- @did = args['DID'] || args['JobDID'] || ''
22
- @title = args['JobTitle'] || ''
16
+ @did = args['JobDID'] || ''
17
+ @title = args['JobTitle'] || ''
18
+ @requirements = args['Requirements'] || ''
23
19
 
24
- # Job Details related
25
- @submit_service_url = args['ApplicationSubmitServiceURL'] || ''
26
- @apply_url = args['ApplyURL'] || ''
27
-
20
+ # Apply URL related
21
+ @submit_service_url = args['ApplicationSubmitServiceURL'] || ''
22
+ @apply_url = (args['ApplyURL'].downcase == 'true')
23
+ @is_shared_apply = args['IsSharedApply'] || ''
28
24
 
29
25
  # Question related
30
26
  @total_questions = args['TotalQuestions'] || ''
31
27
  @total_required_questions = args['TotalRequiredQuestions'] || ''
32
- @question_id = args['QuestionID'] || ''
33
- @is_required = args['IsRequired'] || ''
34
- @question_type = args['QuestionType'] || ''
35
- @question_text = args['QuestionText'] || ''
36
- @expected_response_format = args['ExpectedResponseFormat'] || ''
37
- end
38
- end
39
- end
28
+ @total_questions = @total_questions.to_i if Cb::Utils::Api.is_numeric? @total_questions
29
+ @total_required_questions = @total_required_questions.to_i if Cb::Utils::Api.is_numeric? @total_required_questions
30
+
31
+ @questions = []
32
+ if args.has_key?('Questions')
33
+ unless args['Questions'].empty?
34
+ args['Questions']['Question'].each do | qq |
35
+ @questions << CbApp::CbQuestion.new(qq)
36
+ end
37
+ end
38
+ end
39
+ end # Initialize
40
+ end # CbApp
41
+
42
+ class CbApp::CbQuestion
43
+ attr_accessor :id, :type, :required, :format, :text
44
+
45
+ def initialize(args = {})
46
+ return if args.nil?
47
+
48
+ @id = args['QuestionID'] || ''
49
+ @type = args['QuestionType'] || ''
50
+ @required = (args['IsRequired'].downcase == 'true')
51
+ @format = args['ExpectedResponseFormat'] || ''
52
+ @text = args['QuestionText'] || ''
53
+ end
54
+ end # CbQuestion
55
+
56
+ class CbApp::CbAnswer
57
+
58
+
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>
@@ -1,6 +1,6 @@
1
1
  module Cb
2
2
  class CbJob
3
- attr_accessor :did, :title, :pay,
3
+ attr_accessor :did, :title, :pay, :job_skin,
4
4
  :company_name, :company_did, :company_details_url, :company_image_url, :company,
5
5
  :description_teaser, :location, :distance, :latitude, :longitude,
6
6
  :description, :requirements, :employment_type,
@@ -23,6 +23,7 @@ module Cb
23
23
  @latitude = args['LocationLatitude'] || ''
24
24
  @longitude = args['LocationLongitude'] || ''
25
25
  @pay = args['Pay'] || ''
26
+ @job_skin = args['JobSkin'] || ''
26
27
 
27
28
  # Job Search related
28
29
  @description_teaser = args['DescriptionTeaser'] || ''
@@ -4,9 +4,9 @@ module Cb::Utils
4
4
  class Api
5
5
  include HTTParty
6
6
  base_uri 'http://api.careerbuilder.com'
7
- #debug_output $stderr
8
7
 
9
8
  def initialize
9
+ self.class.debug_output $stderr if Cb.configuration.debug_api
10
10
  self.class.default_params :developerkey => Cb.configuration.dev_key,
11
11
  :outputjson => Cb.configuration.use_json.to_s
12
12
 
@@ -14,6 +14,7 @@ module Cb::Utils
14
14
  end
15
15
 
16
16
  def cb_get(*args, &block)
17
+ self.class.base_uri 'http://api.careerbuilder.com'
17
18
  self.class.get(*args, &block)
18
19
  end
19
20
 
@@ -35,10 +36,9 @@ module Cb::Utils
35
36
  unless meta_name.empty?
36
37
  if meta_name == 'errors' && api_value.is_a?(Hash)
37
38
  api_value = api_value.values
38
- elsif is_numeric?(api_value)
39
+ elsif self.class.is_numeric?(api_value)
39
40
  api_value = api_value.to_i
40
41
  end
41
-
42
42
  meta_class.class.send(:attr_reader, meta_name)
43
43
  meta_class.instance_variable_set(:"@#{meta_name}", api_value)
44
44
  end
@@ -54,19 +54,22 @@ module Cb::Utils
54
54
  criteria.instance_variables.each do |var|
55
55
  var_name = var.to_s
56
56
  var_name.slice!(0)
57
- # var_name_hash_safe = var_name.camelize
58
- var_name_hash_safe = var_name
57
+ var_name_hash_safe = camelize(var_name)
59
58
  params["#{var_name_hash_safe}"] = criteria.instance_variable_get(var)
60
59
  end
61
60
  end
62
61
  return params
63
62
  end
64
63
 
64
+ def self.is_numeric?(obj)
65
+ true if Float(obj) rescue false
66
+ end
67
+
65
68
  private
66
69
  #############################################################################
67
-
68
- def is_numeric?(obj)
69
- true if Float(obj) rescue false
70
+ def self.camelize(input)
71
+ input.sub!(/^[a-z\d]*/) { $&.capitalize }
72
+ input.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{$2.capitalize}" }.gsub('/', '::')
70
73
  end
71
74
 
72
75
  def get_meta_name_for(api_key)
@@ -1,20 +1,22 @@
1
- module Cb::Utils::Country
2
- # These aren't all country codes. We get it. Our naming scheme didn't hold up over time.
3
- def self.get_supported
4
- %w(AH BE CA CC CE CH CN CP CS CY DE DK E1 ER ES EU F1
5
- FR GC GR I1 IE IN IT J1 JC JS LJ M1 MY NL NO PD PI
1
+ module Cb::Utils
2
+ class Country
3
+ # These aren't all country codes. We get it. Our naming scheme didn't hold up over time.
4
+ def self.get_supported
5
+ %w(AH BE CA CC CE CH CN CP CS CY DE DK E1 ER ES EU F1
6
+ FR GC GR I1 IE IN IT J1 JC JS LJ M1 MY NL NO PD PI
6
7
  PL RM RO RX S1 SE SF SG T1 T2 UK US WH WM WR)
7
- end
8
+ end
8
9
 
9
- def self.is_valid?(country)
10
- get_supported.include? country
11
- end
10
+ def self.is_valid?(country)
11
+ get_supported.include? country
12
+ end
12
13
 
13
- def self.inject_convenience_methods
14
- get_supported.each do | country |
15
- unless self.respond_to? "#{country}"
16
- self.define_singleton_method "#{country}" do
17
- return country
14
+ def self.inject_convenience_methods
15
+ get_supported.each do |country|
16
+ unless self.respond_to? "#{country}"
17
+ self.define_singleton_method "#{country}" do
18
+ return country
19
+ end
18
20
  end
19
21
  end
20
22
  end
@@ -1,24 +1,26 @@
1
- module Cb::Utils::FluidAttributes
1
+ module Cb::Utils
2
+ module FluidAttributes
2
3
 
3
- def fluid_attr_accessor(*names)
4
- names.each do |name|
4
+ def fluid_attr_accessor(*names)
5
+ names.each do |name|
5
6
 
6
- define_method :"#{name}" do | *args |
7
- return instance_variable_get(:"@#{name}") if args.length == 0
7
+ define_method :"#{name}" do |*args|
8
+ return instance_variable_get(:"@#{name}") if args.length == 0
8
9
 
9
- if args.length == 1
10
- instance_variable_set(:"@#{name}", args[0])
11
- return self
12
- end
10
+ if args.length == 1
11
+ instance_variable_set(:"@#{name}", args[0])
12
+ return self
13
+ end
13
14
 
14
- raise ArgumentError.new("Wrong number of arguments (#{args.length} for 1)")
15
- end
15
+ raise ArgumentError.new("Wrong number of arguments (#{args.length} for 1)")
16
+ end
16
17
 
17
- define_method :"#{name}=" do |*args|
18
- instance_variable_set(:"@#{name}", args[0]) if args.length == 1
19
- return self
20
- raise ArgumentError, "Wrong number of arguments (#{args.length} for 1)"
21
- end
22
- end
23
- end
18
+ define_method :"#{name}=" do |*args|
19
+ instance_variable_set(:"@#{name}", args[0]) if args.length == 1
20
+ return self
21
+ raise ArgumentError, "Wrong number of arguments (#{args.length} for 1)"
22
+ end
23
+ end
24
+ end
25
+ end
24
26
  end
@@ -1,3 +1,3 @@
1
1
  module Cb
2
- VERSION = '0.0.9'
3
- end
2
+ VERSION = '0.0.14'
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.9
4
+ version: 0.0.14
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-07 00:00:00.000000000 Z
14
+ date: 2013-05-09 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: httparty