rdstation-ruby-client 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +9 -3
- data/README.md +8 -0
- data/lib/rdstation/authentication.rb +24 -0
- data/lib/rdstation/version.rb +1 -1
- data/spec/lib/rdstation/authentication_spec.rb +74 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: adcf1abef180f5dd333152cc6956191fd637f09e
|
4
|
+
data.tar.gz: 22ad74012fcef08e888ef1d72fb73989f84ee651
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad4409d04b424d90f74bab2a3d5264b7a0fe1b74b233840befff8e21a8597c40cb1cd99767292322b65a3ee309d809ad9a00ec8a851855476471fc89bb1a240c
|
7
|
+
data.tar.gz: 54f42eac6c63524bdacfb2c00548f3e9fdc5b0b63554c9c3ceca15f0afc24c800339506582127ebcc21b59e2b39f15ba5b3e20fe3eca9a658d0a258c9b380b5c
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,14 @@
|
|
1
|
+
## 2.1.0
|
2
|
+
|
3
|
+
### Additions
|
4
|
+
|
5
|
+
`RDStation::Authentication.revoke` added. This method revokes an access_token at RD Station.
|
6
|
+
|
1
7
|
## 2.0.0
|
2
8
|
|
3
9
|
### Removals
|
4
10
|
|
5
|
-
All API methods that were called directly on `RDStation::Client` (ex: `RDStation::Client.new('rdstation_token', 'auth_token').create_lead(lead_info)`) have been removed. See the [
|
11
|
+
All API methods that were called directly on `RDStation::Client` (ex: `RDStation::Client.new('rdstation_token', 'auth_token').create_lead(lead_info)`) have been removed. See the [migration guide](README.md#Upgrading-from-1.2.x-to-2.0.0) for a comprehensive guide on how to upgrade from version 1.2.x.
|
6
12
|
|
7
13
|
### Notable changes
|
8
14
|
|
@@ -52,8 +58,8 @@ In cause of Unahtorized (401), the following specific errors may be raised (thos
|
|
52
58
|
|
53
59
|
`rdstation-ruby-client` now requires `ruby >= 2.0.0`.
|
54
60
|
|
55
|
-
## 1.2.1
|
61
|
+
## 1.2.1
|
56
62
|
|
57
63
|
### Deprecations
|
58
64
|
|
59
|
-
All API methods that were called directly on `RDStation::Client` (ex: `RDStation::Client.new('rdstation_token', 'auth_token').create_lead(lead_info)`) are now deprecated. Those methods call RDSM's 1.3 API and will be removed in the next release.
|
65
|
+
All API methods that were called directly on `RDStation::Client` (ex: `RDStation::Client.new('rdstation_token', 'auth_token').create_lead(lead_info)`) are now deprecated. Those methods call RDSM's 1.3 API and will be removed in the next release.
|
data/README.md
CHANGED
@@ -68,6 +68,14 @@ rdstation_authentication = RDStation::Authentication.new('client_id', 'client_se
|
|
68
68
|
rdstation_authentication.update_access_token('refresh_token')
|
69
69
|
```
|
70
70
|
|
71
|
+
#### Revoking an access_token
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
RDStation::Authentication.revoke(access_token: "your token")
|
75
|
+
```
|
76
|
+
|
77
|
+
Note: this will completely remove your credentials from RD Station (`update_access_token` won't work anymore).
|
78
|
+
|
71
79
|
### Contacts
|
72
80
|
|
73
81
|
#### Getting a Contact by UUID
|
@@ -5,6 +5,7 @@ module RDStation
|
|
5
5
|
|
6
6
|
AUTH_TOKEN_URL = 'https://api.rd.services/auth/token'.freeze
|
7
7
|
DEFAULT_HEADERS = { 'Content-Type' => 'application/json' }.freeze
|
8
|
+
REVOKE_URL = 'https://api.rd.services/auth/revoke'.freeze
|
8
9
|
|
9
10
|
def initialize(client_id, client_secret)
|
10
11
|
@client_id = client_id
|
@@ -47,8 +48,31 @@ module RDStation
|
|
47
48
|
ApiResponse.build(response)
|
48
49
|
end
|
49
50
|
|
51
|
+
def self.revoke(access_token:)
|
52
|
+
response = self.post(
|
53
|
+
REVOKE_URL,
|
54
|
+
body: revoke_body(access_token),
|
55
|
+
headers: revoke_headers(access_token)
|
56
|
+
)
|
57
|
+
ApiResponse.build(response)
|
58
|
+
end
|
59
|
+
|
50
60
|
private
|
51
61
|
|
62
|
+
def self.revoke_body(access_token)
|
63
|
+
URI.encode_www_form({
|
64
|
+
token: access_token,
|
65
|
+
token_type_hint: 'access_token'
|
66
|
+
})
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.revoke_headers(access_token)
|
70
|
+
{
|
71
|
+
"Authorization" => "Bearer #{access_token}",
|
72
|
+
"Content-Type" => "application/x-www-form-urlencoded"
|
73
|
+
}
|
74
|
+
end
|
75
|
+
|
52
76
|
def post_to_auth_endpoint(params)
|
53
77
|
default_body = { client_id: @client_id, client_secret: @client_secret }
|
54
78
|
body = default_body.merge(params)
|
data/lib/rdstation/version.rb
CHANGED
@@ -174,4 +174,78 @@ RSpec.describe RDStation::Authentication do
|
|
174
174
|
end
|
175
175
|
end
|
176
176
|
end
|
177
|
+
|
178
|
+
describe ".revoke" do
|
179
|
+
let(:revoke_endpoint) { 'https://api.rd.services/auth/revoke' }
|
180
|
+
let(:request_headers) do
|
181
|
+
{
|
182
|
+
"Authorization" => "Bearer #{access_token}",
|
183
|
+
"Content-Type" => "application/x-www-form-urlencoded"
|
184
|
+
}
|
185
|
+
end
|
186
|
+
|
187
|
+
context "valid access_token" do
|
188
|
+
let(:access_token) { "valid_access_token" }
|
189
|
+
|
190
|
+
let(:ok_response) do
|
191
|
+
{
|
192
|
+
status: 200,
|
193
|
+
headers: { 'Content-Type' => 'application/json' },
|
194
|
+
body: {}.to_json
|
195
|
+
}
|
196
|
+
end
|
197
|
+
|
198
|
+
before do
|
199
|
+
stub_request(:post, revoke_endpoint)
|
200
|
+
.with(
|
201
|
+
headers: request_headers,
|
202
|
+
body: URI.encode_www_form({
|
203
|
+
token: access_token,
|
204
|
+
token_type_hint: 'access_token'
|
205
|
+
})
|
206
|
+
)
|
207
|
+
.to_return(ok_response)
|
208
|
+
end
|
209
|
+
|
210
|
+
it "returns 200 code with an empty hash in the body" do
|
211
|
+
request_response = RDStation::Authentication.revoke(access_token: access_token)
|
212
|
+
expect(request_response).to eq({})
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
context "invalid access token" do
|
217
|
+
let(:access_token) { "invalid_access_token" }
|
218
|
+
|
219
|
+
let(:unauthorized_response) do
|
220
|
+
{
|
221
|
+
status: 401,
|
222
|
+
headers: { 'Content-Type' => 'application/json' },
|
223
|
+
body: {
|
224
|
+
errors: {
|
225
|
+
error_type: 'UNAUTHORIZED',
|
226
|
+
error_message: 'Invalid token.'
|
227
|
+
}
|
228
|
+
}.to_json
|
229
|
+
}
|
230
|
+
end
|
231
|
+
|
232
|
+
before do
|
233
|
+
stub_request(:post, revoke_endpoint)
|
234
|
+
.with(
|
235
|
+
headers: request_headers,
|
236
|
+
body: URI.encode_www_form({
|
237
|
+
token: access_token,
|
238
|
+
token_type_hint: 'access_token'
|
239
|
+
})
|
240
|
+
)
|
241
|
+
.to_return(unauthorized_response)
|
242
|
+
end
|
243
|
+
|
244
|
+
it "raises unauthorized" do
|
245
|
+
expect do
|
246
|
+
RDStation::Authentication.revoke(access_token: access_token)
|
247
|
+
end.to raise_error(RDStation::Error::Unauthorized)
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|
177
251
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdstation-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paulo L F Casaretto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -184,7 +184,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
184
|
- !ruby/object:Gem::Version
|
185
185
|
version: '0'
|
186
186
|
requirements: []
|
187
|
-
|
187
|
+
rubyforge_project:
|
188
|
+
rubygems_version: 2.6.8
|
188
189
|
signing_key:
|
189
190
|
specification_version: 4
|
190
191
|
summary: Ruby API wrapper for RD Station
|