indeed_api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ module IndeedAPI
2
+
3
+ class IndeedError < Exception
4
+
5
+ end
6
+
7
+ end
@@ -0,0 +1,31 @@
1
+ module IndeedAPI
2
+
3
+ class Job
4
+
5
+ attr_reader :job_title, :company, :city, :state, :country, :formatted_location,
6
+ :source, :date, :snippet, :url, :latitude, :longitude, :job_key, :sponsored,
7
+ :expired, :formatted_location_full, :formatted_relative_time
8
+
9
+ def initialize(data = {})
10
+ @job_title = data['jobtitle']
11
+ @company = data['company']
12
+ @city = data['city']
13
+ @state = data['state']
14
+ @country = data['country']
15
+ @formatted_location = data['formattedLocation']
16
+ @source = data['source']
17
+ @date = data['date'] ? Time.parse(data['date']) : nil
18
+ @snippet = data['snippet']
19
+ @url = data['url']
20
+ @latitude = data['latitude'] ? data['latitude'].to_f : nil
21
+ @longitude = data['longitude'] ? data['longitude'].to_f : nil
22
+ @job_key = data['jobkey']
23
+ @sponsored = data['sponsored'] == 'true'
24
+ @expired = data['expired'] == 'true'
25
+ @formatted_location_full = data['formattedLocationFull']
26
+ @formatted_relative_time = data['formattedRelativeTime']
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,5 @@
1
+ module IndeedAPI
2
+
3
+ VERSION = '0.0.1'
4
+
5
+ end
data/lib/indeed_api.rb ADDED
@@ -0,0 +1,65 @@
1
+
2
+ require 'bundler/setup'
3
+ require 'httparty'
4
+
5
+ module IndeedAPI
6
+
7
+ autoload :IndeedError, File.dirname(__FILE__) + '/indeed_api/indeed_error'
8
+ autoload :Job, File.dirname(__FILE__) + '/indeed_api/job'
9
+
10
+ API_VERSION = 2
11
+
12
+ include HTTParty
13
+ base_uri 'http://api.indeed.com/ads'
14
+
15
+ # set your publisher ID - required
16
+ def self.publisher_id=(id)
17
+ @publisher_id = id
18
+ end
19
+
20
+ # get the publisher ID currently in use
21
+ def self.publisher_id
22
+ @publisher_id
23
+ end
24
+
25
+ # Search the API
26
+ # Can specify options at https://ads.indeed.com/jobroll/xmlfeed
27
+ def self.search_jobs(options = {})
28
+ options.merge!(:publisher => self.publisher_id, :v => API_VERSION)
29
+ response = get('/apisearch', :query => options)
30
+ handle_errors(response)
31
+
32
+ return [] unless results = response['response']
33
+ return [] unless results = results['results']
34
+ return [] unless results = results['result']
35
+ results.is_a?(Hash) ? [IndeedAPI::Job.new(results)] : results.map { |jd| IndeedAPI::Job.new(jd) }
36
+ end
37
+
38
+ # Get an individual job - for convenience
39
+ def self.get_job(id)
40
+ jobs = get_jobs([id])
41
+ jobs.empty? ? nil : jobs.first
42
+ end
43
+
44
+ # Get a bunch of jobs at once
45
+ def self.get_jobs(*ids)
46
+ options = { :publisher => self.publisher_id, :jobkeys => ids.join(','), :v => API_VERSION }
47
+ response = get('/apigetjobs', :query => options)
48
+ handle_errors(response)
49
+
50
+ return [] unless results = response['response']
51
+ return [] unless results = results['results']
52
+ return [] unless results = results['result']
53
+ results.is_a?(Hash) ? [IndeedAPI::Job.new(results)] : results.map { |jd| IndeedAPI::Job.new(jd) }
54
+ end
55
+
56
+ private
57
+
58
+ # Throw errors if the response contains an error
59
+ def self.handle_errors(response)
60
+ error = response['response']['error']
61
+ raise Indeed::IndeedError.new(error) if error
62
+ end
63
+
64
+
65
+ end
@@ -0,0 +1 @@
1
+ require 'lib/indeed_api'
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: indeed_api
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - John Crepezzi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-02-07 00:00:00 -05:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :development
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 0.7.3
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ description: Ruby wrapper for the Indeed Job search API
39
+ email: john.crepezzi@patch.com
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - lib/indeed_api/indeed_error.rb
48
+ - lib/indeed_api/job.rb
49
+ - lib/indeed_api/version.rb
50
+ - lib/indeed_api.rb
51
+ - spec/spec_helper.rb
52
+ has_rdoc: true
53
+ homepage: http://seejohnrun.github.com/indeed/
54
+ licenses: []
55
+
56
+ post_install_message:
57
+ rdoc_options: []
58
+
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: "0"
73
+ requirements: []
74
+
75
+ rubyforge_project: indeed_api
76
+ rubygems_version: 1.5.0
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: Ruby wrapper for the Indeed Job API
80
+ test_files:
81
+ - spec/spec_helper.rb