indeed-ruby 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-ruby.rb +70 -0
- metadata +77 -0
data/lib/indeed-ruby.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
require 'json'
|
3
|
+
module Indeed
|
4
|
+
|
5
|
+
class IndeedClientError < StandardError
|
6
|
+
end
|
7
|
+
|
8
|
+
class Client
|
9
|
+
|
10
|
+
API_ROOT = 'http://api.indeed.com/ads'
|
11
|
+
DEFAULT_FORMAT = 'json'
|
12
|
+
|
13
|
+
API_SEARCH = {
|
14
|
+
:end_point => "#{API_ROOT}/apisearch",
|
15
|
+
:required_fields => [:userip, :useragent, [:q, :l]],
|
16
|
+
}
|
17
|
+
|
18
|
+
API_JOBS = {
|
19
|
+
:end_point => "#{API_ROOT}/apigetjobs",
|
20
|
+
:required_fields => [:jobkeys],
|
21
|
+
}
|
22
|
+
|
23
|
+
def initialize(publisher, version = "2")
|
24
|
+
@publisher = publisher
|
25
|
+
@version = version
|
26
|
+
end
|
27
|
+
|
28
|
+
def search(params)
|
29
|
+
process_request(API_SEARCH[:end_point], valid_args(API_SEARCH[:required_fields], params))
|
30
|
+
end
|
31
|
+
|
32
|
+
def jobs(params)
|
33
|
+
valid_args = valid_args(API_JOBS[:required_fields], params)
|
34
|
+
valid_args[:jobkeys] = valid_args[:jobkeys].join(',')
|
35
|
+
process_request(API_JOBS[:end_point], valid_args)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def process_request(endpoint, args)
|
41
|
+
format = args.fetch(:format, DEFAULT_FORMAT)
|
42
|
+
raw = format == 'xml' ? true : args.fetch(:raw, false)
|
43
|
+
args.merge!({:v => @version, :publisher => @publisher, :format => format})
|
44
|
+
response = RestClient.get endpoint, {:params => args}
|
45
|
+
r = (not raw) ? JSON.parse(response.to_str) : response.to_str
|
46
|
+
r
|
47
|
+
end
|
48
|
+
|
49
|
+
def valid_args(required_fields, args)
|
50
|
+
for field in required_fields
|
51
|
+
if field.kind_of?(Array)
|
52
|
+
has_one_required = false
|
53
|
+
for f in field
|
54
|
+
if args.has_key?(f)
|
55
|
+
has_one_required = true
|
56
|
+
break
|
57
|
+
end
|
58
|
+
end
|
59
|
+
if not has_one_required
|
60
|
+
raise IndeedClientError.new('You must provide one of the following %s' % [field.join(', ')])
|
61
|
+
end
|
62
|
+
elsif not args.has_key?(field)
|
63
|
+
raise IndeedClientError.new('The field %s is required' % [field])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
args
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
metadata
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: indeed-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Indeed Labs
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-10-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rest-client
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.6.7
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.6.7
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: json
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.7.5
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.7.5
|
46
|
+
description: Indeed Job Search Ruby Api Client
|
47
|
+
email: labs-team@indeed.com
|
48
|
+
executables: []
|
49
|
+
extensions: []
|
50
|
+
extra_rdoc_files: []
|
51
|
+
files:
|
52
|
+
- lib/indeed-ruby.rb
|
53
|
+
homepage: http://github.com/indeedlabs/indeed-ruby
|
54
|
+
licenses: []
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
requirements: []
|
72
|
+
rubyforge_project:
|
73
|
+
rubygems_version: 1.8.24
|
74
|
+
signing_key:
|
75
|
+
specification_version: 3
|
76
|
+
summary: Indeed Job Search Ruby Api Client
|
77
|
+
test_files: []
|