indeed_api 0.0.1

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.
@@ -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