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.
- data/lib/indeed_api/indeed_error.rb +7 -0
- data/lib/indeed_api/job.rb +31 -0
- data/lib/indeed_api/version.rb +5 -0
- data/lib/indeed_api.rb +65 -0
- data/spec/spec_helper.rb +1 -0
- metadata +81 -0
@@ -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
|
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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|