greenhouse_io 2.3.1 → 2.4.0
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.
- checksums.yaml +4 -4
- data/.gitignore +4 -1
- data/CHANGES.md +10 -1
- data/README.md +12 -2
- data/greenhouse_io.gemspec +0 -1
- data/lib/greenhouse_io.rb +0 -1
- data/lib/greenhouse_io/api.rb +1 -1
- data/lib/greenhouse_io/api/client.rb +5 -4
- data/lib/greenhouse_io/version.rb +1 -1
- data/spec/fixtures/cassettes/client/headers.yml +38 -0
- data/spec/greenhouse_io/api/client_spec.rb +9 -8
- metadata +3 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f943bd5a8beb683ca3d3e7093ab0da59b92dc080
|
4
|
+
data.tar.gz: 61b72fbb33e6b07ff1182b73899820bbac253551
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a60fbbbc126b6972486f2acbbae28ae86aa8b7d2ad4f16b281941279c239be64116b983e44d836a3ab6243b7df49685219bd8d2f2c958b55f7edcaa8f16cca0
|
7
|
+
data.tar.gz: 998ddf413dc68f561770df31e79211bd384f0219b3e87270cb5f5920bce64b4e400fb0565373ec2aa6dc29824dba43f7dfa639df0f286fa28d5c57b766d61b2b
|
data/.gitignore
CHANGED
data/CHANGES.md
CHANGED
@@ -2,9 +2,18 @@
|
|
2
2
|
|
3
3
|
This project follows [semantic versioning](http://semver.org/). This changelog follows suggestions from [keepachangelog.com](http://keepachangelog.com/).
|
4
4
|
|
5
|
-
## Version 2.
|
5
|
+
## Version 2.4.0
|
6
6
|
Released 2016-04-20.
|
7
7
|
|
8
|
+
#### Added
|
9
|
+
- Exposed `link` HTTP header in `GreenhouseIo::Client`.
|
10
|
+
|
11
|
+
#### Removed
|
12
|
+
- Removed dependency on `multi_json` in favor of Ruby's `json` module.
|
13
|
+
|
14
|
+
## Version 2.3.1
|
15
|
+
Released 2016-04-20. In retrospect, this should've been a minor version bump instead of a minor version since this added functionality, not a bug fix.
|
16
|
+
|
8
17
|
#### Added
|
9
18
|
- Added method `create_candidate_note`. Thanks for contributing, [@jleven](https://github.com/jleven)!
|
10
19
|
|
data/README.md
CHANGED
@@ -118,14 +118,14 @@ gh_client = GreenhouseIo::Client.new
|
|
118
118
|
|
119
119
|
#### Listing candidates
|
120
120
|
|
121
|
-
```
|
121
|
+
```ruby
|
122
122
|
gh_client.candidates
|
123
123
|
```
|
124
124
|
|
125
125
|
#### Creating a candidate note
|
126
126
|
Use this method to attach a new note to a candidate.
|
127
127
|
|
128
|
-
```
|
128
|
+
```ruby
|
129
129
|
candidate_id = 4567
|
130
130
|
author_id = 123 # ID of the user who wrote this note
|
131
131
|
note = {
|
@@ -154,6 +154,16 @@ All `GreenhouseIo::Client` API methods accept `:page` and `:per_page` options to
|
|
154
154
|
gh_client.offices(id, page: 1, per_page: 2)
|
155
155
|
```
|
156
156
|
|
157
|
+
You can determine the last page and next page by looking at the `link` header from the last response:
|
158
|
+
|
159
|
+
```ruby
|
160
|
+
gh_client.link
|
161
|
+
|
162
|
+
# => '<https://harvest.greenhouse.io/v1/candidates?page=2&per_page=100>; rel="next",<https://harvest.greenhouse.io/v1/candidates?page=142&per_page=100>; rel="last"'
|
163
|
+
```
|
164
|
+
|
165
|
+
You'll need to manually parse the `next` and `last` links to tell what the next or final page number will be.
|
166
|
+
|
157
167
|
#### Available methods
|
158
168
|
|
159
169
|
Methods for which an `id` is optional:
|
data/greenhouse_io.gemspec
CHANGED
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency('httmultiparty', '~> 0.3.16')
|
22
|
-
spec.add_dependency('multi_json', '~>1.11.2')
|
23
22
|
spec.required_ruby_version = '>= 1.9.3'
|
24
23
|
|
25
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
data/lib/greenhouse_io.rb
CHANGED
data/lib/greenhouse_io/api.rb
CHANGED
@@ -9,7 +9,7 @@ module GreenhouseIo
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def parse_json(response)
|
12
|
-
|
12
|
+
JSON.parse(response.body, symbolize_names: GreenhouseIo.configuration.symbolize_keys)
|
13
13
|
end
|
14
14
|
|
15
15
|
def basic_auth
|
@@ -5,7 +5,7 @@ module GreenhouseIo
|
|
5
5
|
|
6
6
|
PERMITTED_OPTIONS = [:page, :per_page, :job_id]
|
7
7
|
|
8
|
-
attr_accessor :api_token, :rate_limit, :rate_limit_remaining
|
8
|
+
attr_accessor :api_token, :rate_limit, :rate_limit_remaining, :link
|
9
9
|
base_uri 'https://harvest.greenhouse.io/v1'
|
10
10
|
|
11
11
|
def initialize(api_token = nil)
|
@@ -92,7 +92,7 @@ module GreenhouseIo
|
|
92
92
|
:basic_auth => basic_auth
|
93
93
|
})
|
94
94
|
|
95
|
-
|
95
|
+
set_headers_info(response.headers)
|
96
96
|
|
97
97
|
if response.code == 200
|
98
98
|
parse_json(response)
|
@@ -108,7 +108,7 @@ module GreenhouseIo
|
|
108
108
|
:headers => headers
|
109
109
|
})
|
110
110
|
|
111
|
-
|
111
|
+
set_headers_info(response.headers)
|
112
112
|
|
113
113
|
if response.code == 200
|
114
114
|
parse_json(response)
|
@@ -117,9 +117,10 @@ module GreenhouseIo
|
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
|
-
def
|
120
|
+
def set_headers_info(headers)
|
121
121
|
self.rate_limit = headers['x-ratelimit-limit'].to_i
|
122
122
|
self.rate_limit_remaining = headers['x-ratelimit-remaining'].to_i
|
123
|
+
self.link = headers['link'].to_s
|
123
124
|
end
|
124
125
|
end
|
125
126
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://123FakeToken:@harvest.greenhouse.io/v1/candidates
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Type:
|
16
|
+
- application/json;charset=utf-8
|
17
|
+
Date:
|
18
|
+
- Wed, 23 Apr 2014 23:23:01 GMT
|
19
|
+
Link:
|
20
|
+
- "<https://harvest.greenhouse.io/v1/candidates/?page=1&per_page=100>; rel=\"last\""
|
21
|
+
Status:
|
22
|
+
- 200 OK
|
23
|
+
X-Content-Type-Options:
|
24
|
+
- nosniff
|
25
|
+
X-Ratelimit-Limit:
|
26
|
+
- '20'
|
27
|
+
X-Ratelimit-Remaining:
|
28
|
+
- '19'
|
29
|
+
Content-Length:
|
30
|
+
- '68109'
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: "[{\"id\":1,\"first_name\":\"User\",\"last_name\":\"One\",\"company\":null,\"title\":null,\"created_at\":\"2013-10-17T15:32:26Z\",\"last_activity\":\"2013-10-30T14:37:10Z\",\"photo_url\":null,\"attachments\":[{\"filename\":\"USER_1_Resume_10.13.pdf\",\"url\":\"https://resumes.com/USER_1_Resume_10.13.pdf\",\"type\":\"cover_letter\"},{\"filename\":\"USER_1_Resume_10.13.pdf\",\"url\":\"https://prod-heroku.s3.amazonaws.com/person_attachments/USER_1_Resume_10.13.pdf\",\"type\":\"resume\"}],\"application_ids\":[1234],\"phone_numbers\":[{\"value\":\"123-345-5678\",\"type\":\"other\"}],\"addresses\":[],\"email_addresses\":[{\"value\":\"user_one@email.com\",\"type\":\"personal\"}],\"website_addresses\":[],\"social_media_addresses\":[]}]"
|
36
|
+
http_version:
|
37
|
+
recorded_at: Wed, 23 Apr 2014 23:23:02 GMT
|
38
|
+
recorded_with: VCR 2.5.0
|
@@ -43,22 +43,23 @@ describe GreenhouseIo::Client do
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
describe "#
|
46
|
+
describe "#set_headers_info" do
|
47
47
|
before do
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
}
|
48
|
+
VCR.use_cassette('client/headers') do
|
49
|
+
@client.candidates
|
50
|
+
end
|
52
51
|
end
|
53
52
|
|
54
53
|
it "sets the rate limit" do
|
55
|
-
@client.send(:set_rate_limits, @headers)
|
56
54
|
expect(@client.rate_limit).to eq(20)
|
57
55
|
end
|
58
56
|
|
59
57
|
it "sets the remaining rate limit" do
|
60
|
-
@client.
|
61
|
-
|
58
|
+
expect(@client.rate_limit_remaining).to eq(19)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "sets rest link" do
|
62
|
+
expect(@client.link).to eq('<https://harvest.greenhouse.io/v1/candidates/?page=1&per_page=100>; rel="last"')
|
62
63
|
end
|
63
64
|
end
|
64
65
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: greenhouse_io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greenhouse Software
|
@@ -25,20 +25,6 @@ dependencies:
|
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 0.3.16
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: multi_json
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: 1.11.2
|
35
|
-
type: :runtime
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: 1.11.2
|
42
28
|
- !ruby/object:Gem::Dependency
|
43
29
|
name: bundler
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,6 +133,7 @@ files:
|
|
147
133
|
- spec/fixtures/cassettes/client/create_candidate_note_invalid_user_id.yml
|
148
134
|
- spec/fixtures/cassettes/client/department.yml
|
149
135
|
- spec/fixtures/cassettes/client/departments.yml
|
136
|
+
- spec/fixtures/cassettes/client/headers.yml
|
150
137
|
- spec/fixtures/cassettes/client/job.yml
|
151
138
|
- spec/fixtures/cassettes/client/job_post.yml
|
152
139
|
- spec/fixtures/cassettes/client/jobs.yml
|
@@ -218,6 +205,7 @@ test_files:
|
|
218
205
|
- spec/fixtures/cassettes/client/create_candidate_note_invalid_user_id.yml
|
219
206
|
- spec/fixtures/cassettes/client/department.yml
|
220
207
|
- spec/fixtures/cassettes/client/departments.yml
|
208
|
+
- spec/fixtures/cassettes/client/headers.yml
|
221
209
|
- spec/fixtures/cassettes/client/job.yml
|
222
210
|
- spec/fixtures/cassettes/client/job_post.yml
|
223
211
|
- spec/fixtures/cassettes/client/jobs.yml
|