signet 0.14.1 → 0.16.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.
- checksums.yaml +4 -4
- data/.yardopts +11 -0
- data/CHANGELOG.md +26 -2
- data/CODE_OF_CONDUCT.md +43 -0
- data/README.md +10 -7
- data/SECURITY.md +7 -0
- data/lib/signet/oauth_1/client.rb +51 -72
- data/lib/signet/oauth_1/credential.rb +3 -11
- data/lib/signet/oauth_1/server.rb +7 -29
- data/lib/signet/oauth_1/signature_methods/hmac_sha1.rb +1 -1
- data/lib/signet/oauth_1/signature_methods/plaintext.rb +1 -1
- data/lib/signet/oauth_1/signature_methods/rsa_sha1.rb +2 -2
- data/lib/signet/oauth_1.rb +11 -21
- data/lib/signet/oauth_2/client.rb +36 -58
- data/lib/signet/oauth_2.rb +10 -14
- data/lib/signet/version.rb +1 -1
- data/lib/signet.rb +5 -8
- metadata +32 -32
- data/Gemfile +0 -8
- data/Rakefile +0 -112
- data/signet.gemspec +0 -44
- data/spec/signet/oauth_1/client_spec.rb +0 -810
- data/spec/signet/oauth_1/credential_spec.rb +0 -169
- data/spec/signet/oauth_1/server_spec.rb +0 -839
- data/spec/signet/oauth_1/signature_methods/hmac_sha1_spec.rb +0 -61
- data/spec/signet/oauth_1/signature_methods/plaintext_spec.rb +0 -61
- data/spec/signet/oauth_1/signature_methods/rsa_sha1_spec.rb +0 -126
- data/spec/signet/oauth_1_spec.rb +0 -1036
- data/spec/signet/oauth_2/client_spec.rb +0 -1254
- data/spec/signet/oauth_2_spec.rb +0 -194
- data/spec/signet_spec.rb +0 -78
- data/spec/spec.opts +0 -2
- data/spec/spec_helper.rb +0 -10
- data/spec/spec_helper_spec.rb +0 -17
- data/website/index.html +0 -95
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53569e11ad43433cd62b3d887bc959a632a835e6fa72ada936856967820e24df
|
4
|
+
data.tar.gz: 30970162c79ed861a09a6424bb84822685a2f5413d9ac1c0b5172cad3fa8a197
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4d619adaec9829803ac0fbc1e6f3c13f6d2b03caa64252bc35d4df0bcd72b9ef995b3f1a157c5ab02e328c88ca0d74b25edefebbf08e7ab41361017a5d5fdd8
|
7
|
+
data.tar.gz: ea2ed4ad72eace1d2ec0936a0243ca7ad07920cc9fee43a27f2c3f6de100370c60953a7842f6a416490e5bd93d7f17ff7771d7c7ef515fe8ad7ffcc4474547a1
|
data/.yardopts
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,35 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
-
|
3
|
+
### [0.16.1](https://www.github.com/googleapis/signet/compare/signet/v0.16.0...signet/v0.16.1) (2022-02-24)
|
4
4
|
|
5
5
|
|
6
6
|
### Bug Fixes
|
7
7
|
|
8
|
-
*
|
8
|
+
* Support Faraday 2 ([f1c6cc3](https://www.github.com/googleapis/signet/commit/f1c6cc373876ea84281fadf72d7041976f2bc133))
|
9
|
+
|
10
|
+
## [0.16.0](https://www.github.com/googleapis/signet/compare/signet/v0.15.0...signet/v0.16.0) (2021-09-03)
|
11
|
+
|
12
|
+
|
13
|
+
### Features
|
14
|
+
|
15
|
+
* Support for fetching an access token with basic auth ([3c43e32](https://www.github.com/googleapis/signet/commit/3c43e3201d79b1e2303e672f3c07e060c5079423))
|
16
|
+
|
17
|
+
|
18
|
+
### Bug Fixes
|
19
|
+
|
20
|
+
* Remove extraneous files from the gem ([e515bb6](https://www.github.com/googleapis/signet/commit/e515bb627a64e32ec885412fed8b01eb73067ee0))
|
21
|
+
* Require addressable 2.8 to remediate vulnerability ([9a2f899](https://www.github.com/googleapis/signet/commit/9a2f8996f522538c4bb7998535e2a50331d564fc))
|
22
|
+
|
23
|
+
## [0.15.0](https://www.github.com/googleapis/signet/compare/v0.14.1...v0.15.0) (2021-03-04)
|
24
|
+
|
25
|
+
|
26
|
+
### Features
|
27
|
+
|
28
|
+
* Drop support for Ruby 2.4 and add support for Ruby 3.0 ([bd6fe87](https://www.github.com/googleapis/signet/commit/bd6fe87948f8fc7702720dae651e82f4fd348b5d))
|
29
|
+
|
30
|
+
## 0.14.1 / 2021-01-27
|
31
|
+
|
32
|
+
* Fix OAuth1 signature with duplicate query param names
|
9
33
|
|
10
34
|
## 0.14.0 / 2020-03-31
|
11
35
|
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# Contributor Code of Conduct
|
2
|
+
|
3
|
+
As contributors and maintainers of this project,
|
4
|
+
and in the interest of fostering an open and welcoming community,
|
5
|
+
we pledge to respect all people who contribute through reporting issues,
|
6
|
+
posting feature requests, updating documentation,
|
7
|
+
submitting pull requests or patches, and other activities.
|
8
|
+
|
9
|
+
We are committed to making participation in this project
|
10
|
+
a harassment-free experience for everyone,
|
11
|
+
regardless of level of experience, gender, gender identity and expression,
|
12
|
+
sexual orientation, disability, personal appearance,
|
13
|
+
body size, race, ethnicity, age, religion, or nationality.
|
14
|
+
|
15
|
+
Examples of unacceptable behavior by participants include:
|
16
|
+
|
17
|
+
* The use of sexualized language or imagery
|
18
|
+
* Personal attacks
|
19
|
+
* Trolling or insulting/derogatory comments
|
20
|
+
* Public or private harassment
|
21
|
+
* Publishing other's private information,
|
22
|
+
such as physical or electronic
|
23
|
+
addresses, without explicit permission
|
24
|
+
* Other unethical or unprofessional conduct.
|
25
|
+
|
26
|
+
Project maintainers have the right and responsibility to remove, edit, or reject
|
27
|
+
comments, commits, code, wiki edits, issues, and other contributions
|
28
|
+
that are not aligned to this Code of Conduct.
|
29
|
+
By adopting this Code of Conduct,
|
30
|
+
project maintainers commit themselves to fairly and consistently
|
31
|
+
applying these principles to every aspect of managing this project.
|
32
|
+
Project maintainers who do not follow or enforce the Code of Conduct
|
33
|
+
may be permanently removed from the project team.
|
34
|
+
|
35
|
+
This code of conduct applies both within project spaces and in public spaces
|
36
|
+
when an individual is representing the project or its community.
|
37
|
+
|
38
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior
|
39
|
+
may be reported by opening an issue
|
40
|
+
or contacting one or more of the project maintainers.
|
41
|
+
|
42
|
+
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
|
43
|
+
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
|
data/README.md
CHANGED
@@ -31,8 +31,8 @@ require 'signet/oauth_2/client'
|
|
31
31
|
client = Signet::OAuth2::Client.new(
|
32
32
|
:authorization_uri => 'https://accounts.google.com/o/oauth2/auth',
|
33
33
|
:token_credential_uri => 'https://oauth2.googleapis.com/token',
|
34
|
-
:client_id =>
|
35
|
-
:client_secret =>
|
34
|
+
:client_id => "#{YOUR_CLIENT_ID}.apps.googleusercontent.com",
|
35
|
+
:client_secret => YOUR_CLIENT_SECRET,
|
36
36
|
:scope => 'email profile',
|
37
37
|
:redirect_uri => 'https://example.client.com/oauth'
|
38
38
|
)
|
@@ -59,8 +59,11 @@ Be sure `https://rubygems.org` is in your gem sources.
|
|
59
59
|
|
60
60
|
## Supported Ruby Versions
|
61
61
|
|
62
|
-
This library
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
62
|
+
This library is supported on Ruby 2.5+.
|
63
|
+
|
64
|
+
Google provides official support for Ruby versions that are actively supported
|
65
|
+
by Ruby Core—that is, Ruby versions that are either in normal maintenance or in
|
66
|
+
security maintenance, and not end of life. Currently, this means Ruby 2.5 and
|
67
|
+
later. Older versions of Ruby _may_ still work, but are unsupported and not
|
68
|
+
recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details
|
69
|
+
about the Ruby support schedule.
|
data/SECURITY.md
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# Security Policy
|
2
|
+
|
3
|
+
To report a security issue, please use [g.co/vulnz](https://g.co/vulnz).
|
4
|
+
|
5
|
+
The Google Security Team will respond within 5 working days of your report on g.co/vulnz.
|
6
|
+
|
7
|
+
We use g.co/vulnz for our intake, and do coordination and disclosure here using GitHub Security Advisory to privately discuss and fix the issue.
|
@@ -89,7 +89,7 @@ module Signet
|
|
89
89
|
# @see Signet::OAuth1::Client#initialize
|
90
90
|
def update! options = {}
|
91
91
|
# Normalize key to String to allow indifferent access.
|
92
|
-
options = options.
|
92
|
+
options = options.to_h.transform_keys(&:to_s)
|
93
93
|
self.temporary_credential_uri = options["temporary_credential_uri"]
|
94
94
|
self.authorization_uri = options["authorization_uri"]
|
95
95
|
self.token_credential_uri = options["token_credential_uri"]
|
@@ -128,12 +128,12 @@ module Signet
|
|
128
128
|
# new_temporary_credential_uri
|
129
129
|
# The temporary credentials URI.
|
130
130
|
def temporary_credential_uri= new_temporary_credential_uri
|
131
|
-
if
|
131
|
+
if new_temporary_credential_uri.nil?
|
132
|
+
@temporary_credential_uri = nil
|
133
|
+
else
|
132
134
|
new_temporary_credential_uri =
|
133
135
|
Addressable::URI.parse new_temporary_credential_uri
|
134
136
|
@temporary_credential_uri = new_temporary_credential_uri
|
135
|
-
else
|
136
|
-
@temporary_credential_uri = nil
|
137
137
|
end
|
138
138
|
end
|
139
139
|
alias request_token_uri= temporary_credential_uri=
|
@@ -163,14 +163,14 @@ module Signet
|
|
163
163
|
# @param [Addressable::URI, String, #to_str] new_authorization_uri
|
164
164
|
# The authorization URI.
|
165
165
|
def authorization_uri= new_authorization_uri
|
166
|
-
if
|
166
|
+
if new_authorization_uri.nil?
|
167
|
+
@authorization_uri = nil
|
168
|
+
else
|
167
169
|
new_authorization_uri = Addressable::URI.send(
|
168
170
|
new_authorization_uri.is_a?(Hash) ? :new : :parse,
|
169
171
|
new_authorization_uri
|
170
172
|
)
|
171
173
|
@authorization_uri = new_authorization_uri
|
172
|
-
else
|
173
|
-
@authorization_uri = nil
|
174
174
|
end
|
175
175
|
end
|
176
176
|
|
@@ -189,14 +189,14 @@ module Signet
|
|
189
189
|
# @param [Addressable::URI, Hash, String, #to_str] new_token_credential_uri
|
190
190
|
# The token credential URI.
|
191
191
|
def token_credential_uri= new_token_credential_uri
|
192
|
-
if
|
192
|
+
if new_token_credential_uri.nil?
|
193
|
+
@token_credential_uri = nil
|
194
|
+
else
|
193
195
|
new_token_credential_uri = Addressable::URI.send(
|
194
196
|
new_token_credential_uri.is_a?(Hash) ? :new : :parse,
|
195
197
|
new_token_credential_uri
|
196
198
|
)
|
197
199
|
@token_credential_uri = new_token_credential_uri
|
198
|
-
else
|
199
|
-
@token_credential_uri = nil
|
200
200
|
end
|
201
201
|
end
|
202
202
|
alias access_token_uri= token_credential_uri=
|
@@ -217,8 +217,7 @@ module Signet
|
|
217
217
|
elsif !client_credential_key && !client_credential_secret
|
218
218
|
nil
|
219
219
|
else
|
220
|
-
raise ArgumentError,
|
221
|
-
"The client credential key and secret must be set."
|
220
|
+
raise ArgumentError, "The client credential key and secret must be set."
|
222
221
|
end
|
223
222
|
end
|
224
223
|
alias consumer_token client_credential
|
@@ -229,7 +228,10 @@ module Signet
|
|
229
228
|
# @param [Signet::OAuth1::Credential] new_client_credential
|
230
229
|
# The client credentials.
|
231
230
|
def client_credential= new_client_credential
|
232
|
-
if
|
231
|
+
if new_client_credential.nil?
|
232
|
+
@client_credential_key = nil
|
233
|
+
@client_credential_secret = nil
|
234
|
+
else
|
233
235
|
unless new_client_credential.is_a? ::Signet::OAuth1::Credential
|
234
236
|
raise TypeError,
|
235
237
|
"Expected Signet::OAuth1::Credential, " \
|
@@ -237,9 +239,6 @@ module Signet
|
|
237
239
|
end
|
238
240
|
@client_credential_key = new_client_credential.key
|
239
241
|
@client_credential_secret = new_client_credential.secret
|
240
|
-
else
|
241
|
-
@client_credential_key = nil
|
242
|
-
@client_credential_secret = nil
|
243
242
|
end
|
244
243
|
end
|
245
244
|
alias consumer_token= client_credential=
|
@@ -259,15 +258,15 @@ module Signet
|
|
259
258
|
# @param [String, #to_str] new_client_credential_key
|
260
259
|
# The client credential key.
|
261
260
|
def client_credential_key= new_client_credential_key
|
262
|
-
if
|
261
|
+
if new_client_credential_key.nil?
|
262
|
+
@client_credential_key = nil
|
263
|
+
else
|
263
264
|
unless new_client_credential_key.respond_to? :to_str
|
264
265
|
raise TypeError,
|
265
266
|
"Can't convert #{new_client_credential_key.class} into String."
|
266
267
|
end
|
267
268
|
new_client_credential_key = new_client_credential_key.to_str
|
268
269
|
@client_credential_key = new_client_credential_key
|
269
|
-
else
|
270
|
-
@client_credential_key = nil
|
271
270
|
end
|
272
271
|
end
|
273
272
|
alias consumer_key= client_credential_key=
|
@@ -287,7 +286,9 @@ module Signet
|
|
287
286
|
# @param [String, #to_str] new_client_credential_secret
|
288
287
|
# The client credential secret.
|
289
288
|
def client_credential_secret= new_client_credential_secret
|
290
|
-
if
|
289
|
+
if new_client_credential_secret.nil?
|
290
|
+
@client_credential_secret = nil
|
291
|
+
else
|
291
292
|
unless new_client_credential_secret.respond_to? :to_str
|
292
293
|
raise TypeError,
|
293
294
|
"Can't convert #{new_client_credential_secret.class} " \
|
@@ -295,8 +296,6 @@ module Signet
|
|
295
296
|
end
|
296
297
|
new_client_credential_secret = new_client_credential_secret.to_str
|
297
298
|
@client_credential_secret = new_client_credential_secret
|
298
|
-
else
|
299
|
-
@client_credential_secret = nil
|
300
299
|
end
|
301
300
|
end
|
302
301
|
alias consumer_secret= client_credential_secret=
|
@@ -311,12 +310,10 @@ module Signet
|
|
311
310
|
temporary_credential_key,
|
312
311
|
temporary_credential_secret
|
313
312
|
)
|
314
|
-
elsif !temporary_credential_key &&
|
315
|
-
!temporary_credential_secret
|
313
|
+
elsif !temporary_credential_key && !temporary_credential_secret
|
316
314
|
nil
|
317
315
|
else
|
318
|
-
raise ArgumentError,
|
319
|
-
"The temporary credential key and secret must be set."
|
316
|
+
raise ArgumentError, "The temporary credential key and secret must be set."
|
320
317
|
end
|
321
318
|
end
|
322
319
|
alias request_token temporary_credential
|
@@ -327,7 +324,10 @@ module Signet
|
|
327
324
|
# @param [Signet::OAuth1::Credential] new_temporary_credential
|
328
325
|
# The temporary credentials.
|
329
326
|
def temporary_credential= new_temporary_credential
|
330
|
-
if
|
327
|
+
if new_temporary_credential.nil?
|
328
|
+
@temporary_credential_key = nil
|
329
|
+
@temporary_credential_secret = nil
|
330
|
+
else
|
331
331
|
unless new_temporary_credential.is_a? ::Signet::OAuth1::Credential
|
332
332
|
raise TypeError,
|
333
333
|
"Expected Signet::OAuth1::Credential, " \
|
@@ -335,9 +335,6 @@ module Signet
|
|
335
335
|
end
|
336
336
|
@temporary_credential_key = new_temporary_credential.key
|
337
337
|
@temporary_credential_secret = new_temporary_credential.secret
|
338
|
-
else
|
339
|
-
@temporary_credential_key = nil
|
340
|
-
@temporary_credential_secret = nil
|
341
338
|
end
|
342
339
|
end
|
343
340
|
alias request_token= temporary_credential=
|
@@ -357,7 +354,9 @@ module Signet
|
|
357
354
|
# @param [String, #to_str] new_temporary_credential_key
|
358
355
|
# The temporary credential key.
|
359
356
|
def temporary_credential_key= new_temporary_credential_key
|
360
|
-
if
|
357
|
+
if new_temporary_credential_key.nil?
|
358
|
+
@temporary_credential_key = nil
|
359
|
+
else
|
361
360
|
unless new_temporary_credential_key.respond_to? :to_str
|
362
361
|
raise TypeError,
|
363
362
|
"Can't convert #{new_temporary_credential_key.class} " \
|
@@ -365,8 +364,6 @@ module Signet
|
|
365
364
|
end
|
366
365
|
new_temporary_credential_key = new_temporary_credential_key.to_str
|
367
366
|
@temporary_credential_key = new_temporary_credential_key
|
368
|
-
else
|
369
|
-
@temporary_credential_key = nil
|
370
367
|
end
|
371
368
|
end
|
372
369
|
alias request_token_key= temporary_credential_key=
|
@@ -386,7 +383,9 @@ module Signet
|
|
386
383
|
# @param [String, #to_str] new_temporary_credential_secret
|
387
384
|
# The temporary credential secret.
|
388
385
|
def temporary_credential_secret= new_temporary_credential_secret
|
389
|
-
if
|
386
|
+
if new_temporary_credential_secret.nil?
|
387
|
+
@temporary_credential_secret = nil
|
388
|
+
else
|
390
389
|
unless new_temporary_credential_secret.respond_to? :to_str
|
391
390
|
raise TypeError,
|
392
391
|
"Can't convert #{new_temporary_credential_secret.class} " \
|
@@ -395,8 +394,6 @@ module Signet
|
|
395
394
|
new_temporary_credential_secret =
|
396
395
|
new_temporary_credential_secret.to_str
|
397
396
|
@temporary_credential_secret = new_temporary_credential_secret
|
398
|
-
else
|
399
|
-
@temporary_credential_secret = nil
|
400
397
|
end
|
401
398
|
end
|
402
399
|
alias request_token_secret= temporary_credential_secret=
|
@@ -411,12 +408,10 @@ module Signet
|
|
411
408
|
token_credential_key,
|
412
409
|
token_credential_secret
|
413
410
|
)
|
414
|
-
elsif !token_credential_key &&
|
415
|
-
!token_credential_secret
|
411
|
+
elsif !token_credential_key && !token_credential_secret
|
416
412
|
nil
|
417
413
|
else
|
418
|
-
raise ArgumentError,
|
419
|
-
"The token credential key and secret must be set."
|
414
|
+
raise ArgumentError, "The token credential key and secret must be set."
|
420
415
|
end
|
421
416
|
end
|
422
417
|
alias access_token token_credential
|
@@ -427,7 +422,10 @@ module Signet
|
|
427
422
|
# @param [Signet::OAuth1::Credential] new_token_credential
|
428
423
|
# The token credentials.
|
429
424
|
def token_credential= new_token_credential
|
430
|
-
if
|
425
|
+
if new_token_credential.nil?
|
426
|
+
@token_credential_key = nil
|
427
|
+
@token_credential_secret = nil
|
428
|
+
else
|
431
429
|
unless new_token_credential.is_a? ::Signet::OAuth1::Credential
|
432
430
|
raise TypeError,
|
433
431
|
"Expected Signet::OAuth1::Credential, " \
|
@@ -435,9 +433,6 @@ module Signet
|
|
435
433
|
end
|
436
434
|
@token_credential_key = new_token_credential.key
|
437
435
|
@token_credential_secret = new_token_credential.secret
|
438
|
-
else
|
439
|
-
@token_credential_key = nil
|
440
|
-
@token_credential_secret = nil
|
441
436
|
end
|
442
437
|
end
|
443
438
|
alias access_token= token_credential=
|
@@ -457,7 +452,9 @@ module Signet
|
|
457
452
|
# @param [String, #to_str] new_token_credential_key
|
458
453
|
# The token credential key.
|
459
454
|
def token_credential_key= new_token_credential_key
|
460
|
-
if
|
455
|
+
if new_token_credential_key.nil?
|
456
|
+
@token_credential_key = nil
|
457
|
+
else
|
461
458
|
unless new_token_credential_key.respond_to? :to_str
|
462
459
|
raise TypeError,
|
463
460
|
"Can't convert #{new_token_credential_key.class} " \
|
@@ -465,8 +462,6 @@ module Signet
|
|
465
462
|
end
|
466
463
|
new_token_credential_key = new_token_credential_key.to_str
|
467
464
|
@token_credential_key = new_token_credential_key
|
468
|
-
else
|
469
|
-
@token_credential_key = nil
|
470
465
|
end
|
471
466
|
end
|
472
467
|
alias access_token_key= token_credential_key=
|
@@ -486,7 +481,9 @@ module Signet
|
|
486
481
|
# @param [String, #to_str] new_token_credential_secret
|
487
482
|
# The token credential secret.
|
488
483
|
def token_credential_secret= new_token_credential_secret
|
489
|
-
if
|
484
|
+
if new_token_credential_secret.nil?
|
485
|
+
@token_credential_secret = nil
|
486
|
+
else
|
490
487
|
unless new_token_credential_secret.respond_to? :to_str
|
491
488
|
raise TypeError,
|
492
489
|
"Can't convert #{new_token_credential_secret.class} " \
|
@@ -495,8 +492,6 @@ module Signet
|
|
495
492
|
new_token_credential_secret =
|
496
493
|
new_token_credential_secret.to_str
|
497
494
|
@token_credential_secret = new_token_credential_secret
|
498
|
-
else
|
499
|
-
@token_credential_secret = nil
|
500
495
|
end
|
501
496
|
end
|
502
497
|
alias access_token_secret= token_credential_secret=
|
@@ -515,15 +510,15 @@ module Signet
|
|
515
510
|
# @param [String, #to_str] new_callback
|
516
511
|
# The OAuth callback.
|
517
512
|
def callback= new_callback
|
518
|
-
if
|
513
|
+
if new_callback.nil?
|
514
|
+
@callback = nil
|
515
|
+
else
|
519
516
|
unless new_callback.respond_to? :to_str
|
520
517
|
raise TypeError,
|
521
518
|
"Can't convert #{new_callback.class} into String."
|
522
519
|
end
|
523
520
|
new_callback = new_callback.to_str
|
524
521
|
@callback = new_callback
|
525
|
-
else
|
526
|
-
@callback = nil
|
527
522
|
end
|
528
523
|
end
|
529
524
|
|
@@ -556,7 +551,7 @@ module Signet
|
|
556
551
|
# @note A serialized client contains sensitive information. Persist or transmit with care.
|
557
552
|
#
|
558
553
|
# @return [String] A serialized JSON representation of the client.
|
559
|
-
def to_json
|
554
|
+
def to_json *_args
|
560
555
|
MultiJson.dump(
|
561
556
|
"temporary_credential_uri" => temporary_credential_uri,
|
562
557
|
"authorization_uri" => authorization_uri,
|
@@ -571,8 +566,6 @@ module Signet
|
|
571
566
|
"token_credential_secret" => token_credential_secret
|
572
567
|
)
|
573
568
|
end
|
574
|
-
# rubocop:disable Metrics/AbcSize
|
575
|
-
# rubocop:disable Metrics/MethodLength
|
576
569
|
|
577
570
|
##
|
578
571
|
# Generates a request for temporary credentials.
|
@@ -635,8 +628,6 @@ module Signet
|
|
635
628
|
req.headers = Faraday::Utils::Headers.new headers
|
636
629
|
end
|
637
630
|
end
|
638
|
-
# rubocop:enable Metrics/AbcSize
|
639
|
-
# rubocop:enable Metrics/MethodLength
|
640
631
|
alias generate_request_token_request generate_temporary_credential_request
|
641
632
|
|
642
633
|
##
|
@@ -709,8 +700,6 @@ module Signet
|
|
709
700
|
self.temporary_credential = credential
|
710
701
|
end
|
711
702
|
alias fetch_request_token! fetch_temporary_credential!
|
712
|
-
# rubocop:disable Metrics/AbcSize
|
713
|
-
# rubocop:disable Metrics/MethodLength
|
714
703
|
|
715
704
|
##
|
716
705
|
# Generates a request for token credentials.
|
@@ -776,7 +765,6 @@ module Signet
|
|
776
765
|
req.headers = Faraday::Utils::Headers.new headers
|
777
766
|
end
|
778
767
|
end
|
779
|
-
# rubocop:enable Metrics/MethodLength
|
780
768
|
alias generate_access_token_request generate_token_credential_request
|
781
769
|
|
782
770
|
##
|
@@ -818,7 +806,6 @@ module Signet
|
|
818
806
|
message, request: request, response: response
|
819
807
|
)
|
820
808
|
end
|
821
|
-
# rubocop:enable Metrics/AbcSize
|
822
809
|
alias fetch_access_token fetch_token_credential
|
823
810
|
|
824
811
|
##
|
@@ -846,10 +833,6 @@ module Signet
|
|
846
833
|
self.token_credential = credential
|
847
834
|
end
|
848
835
|
alias fetch_access_token! fetch_token_credential!
|
849
|
-
# rubocop:disable Metrics/AbcSize
|
850
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
851
|
-
# rubocop:disable Metrics/MethodLength
|
852
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
853
836
|
|
854
837
|
##
|
855
838
|
# Generates an authenticated request for protected resources.
|
@@ -943,14 +926,14 @@ module Signet
|
|
943
926
|
|
944
927
|
content_type = request["Content-Type"].to_s
|
945
928
|
content_type = content_type.split(";", 2).first if content_type.index ";"
|
946
|
-
if request.
|
929
|
+
if request.http_method == :post && content_type == "application/x-www-form-urlencoded"
|
947
930
|
# Serializes the body in case a hash/array was passed. Noop if already string like
|
948
931
|
encoder = Faraday::Request::UrlEncoded.new(->(_env) {})
|
949
932
|
encoder.call env
|
950
933
|
request.body = env[:body]
|
951
934
|
|
952
935
|
post_parameters = Addressable::URI.form_unencode env[:body]
|
953
|
-
parameters
|
936
|
+
parameters.concat post_parameters
|
954
937
|
end
|
955
938
|
|
956
939
|
# No need to attach URI query parameters, the .sign_parameters
|
@@ -970,10 +953,6 @@ module Signet
|
|
970
953
|
request["Cache-Control"] = "no-store"
|
971
954
|
request
|
972
955
|
end
|
973
|
-
# rubocop:enable Metrics/AbcSize
|
974
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
975
|
-
# rubocop:enable Metrics/MethodLength
|
976
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
977
956
|
|
978
957
|
##
|
979
958
|
# Transmits a request for a protected resource.
|
@@ -12,14 +12,9 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
module Signet
|
15
|
+
module Signet # :nodoc:
|
16
16
|
module OAuth1
|
17
17
|
class Credential
|
18
|
-
# rubocop:disable Metrics/AbcSize
|
19
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
20
|
-
# rubocop:disable Metrics/MethodLength
|
21
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
22
|
-
|
23
18
|
##
|
24
19
|
# Creates a token object from a key and secret.
|
25
20
|
#
|
@@ -95,12 +90,9 @@ module Signet #:nodoc:
|
|
95
90
|
raise TypeError, "Expected String, got #{@secret.class}." unless @secret.respond_to? :to_str
|
96
91
|
@secret = @secret.to_str
|
97
92
|
end
|
98
|
-
# rubocop:enable Metrics/AbcSize
|
99
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
100
|
-
# rubocop:enable Metrics/MethodLength
|
101
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
102
93
|
|
103
|
-
attr_accessor :key
|
94
|
+
attr_accessor :key
|
95
|
+
attr_accessor :secret
|
104
96
|
|
105
97
|
def to_hash
|
106
98
|
{
|
@@ -55,15 +55,13 @@ module Signet
|
|
55
55
|
instance_variable_set "@#{attr}", options[attr]
|
56
56
|
end
|
57
57
|
end
|
58
|
-
# rubocop:disable Naming/UncommunicativeMethodParamName
|
59
58
|
|
60
59
|
# Constant time string comparison.
|
61
|
-
def safe_equals?
|
62
|
-
check =
|
63
|
-
|
60
|
+
def safe_equals? left, right
|
61
|
+
check = left.bytesize ^ right.bytesize
|
62
|
+
left.bytes.zip(right.bytes) { |x, y| check |= x ^ y.to_i }
|
64
63
|
check.zero?
|
65
64
|
end
|
66
|
-
# rubocop:enable Naming/UncommunicativeMethodParamName
|
67
65
|
|
68
66
|
##
|
69
67
|
# Determine if the supplied nonce/timestamp pair is valid by calling
|
@@ -141,8 +139,6 @@ module Signet
|
|
141
139
|
verified = @verifier.call verifier if @verifier.respond_to? :call
|
142
140
|
verified ? true : false
|
143
141
|
end
|
144
|
-
# rubocop:disable Metrics/MethodLength
|
145
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
146
142
|
|
147
143
|
##
|
148
144
|
# Validate and normalize the components from an HTTP request.
|
@@ -156,12 +152,12 @@ module Signet
|
|
156
152
|
# @return [Hash] normalized request components
|
157
153
|
def verify_request_components options = {}
|
158
154
|
if options[:request]
|
159
|
-
if options[:request].is_a?
|
155
|
+
if options[:request].is_a? Faraday::Request
|
160
156
|
request = options[:request]
|
161
157
|
elsif options[:adapter]
|
162
158
|
request = options[:adapter].adapt_request options[:request]
|
163
159
|
end
|
164
|
-
method = request.
|
160
|
+
method = request.http_method
|
165
161
|
uri = request.path
|
166
162
|
headers = request.headers
|
167
163
|
body = request.body
|
@@ -188,8 +184,6 @@ module Signet
|
|
188
184
|
request_components[:body] = body
|
189
185
|
request_components
|
190
186
|
end
|
191
|
-
# rubocop:enable Metrics/MethodLength
|
192
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
193
187
|
|
194
188
|
##
|
195
189
|
# Validate and normalize the HTTP Authorization header.
|
@@ -199,11 +193,7 @@ module Signet
|
|
199
193
|
def verify_auth_header_components headers
|
200
194
|
auth_header = headers.find { |x| x[0] == "Authorization" }
|
201
195
|
raise MalformedAuthorizationError, "Authorization header is missing" if auth_header.nil? || auth_header[1] == ""
|
202
|
-
|
203
|
-
auth_header[1]
|
204
|
-
).each_with_object({}) { |(key, val), acc| acc[key.downcase] = val; }
|
205
|
-
|
206
|
-
auth_hash
|
196
|
+
::Signet::OAuth1.parse_authorization_header(auth_header[1]).to_h.transform_keys(&:downcase)
|
207
197
|
end
|
208
198
|
|
209
199
|
##
|
@@ -232,14 +222,9 @@ module Signet
|
|
232
222
|
|
233
223
|
auth_header = request_components[:headers].find { |x| x[0] == "Authorization" }
|
234
224
|
raise MalformedAuthorizationError, "Authorization header is missing" if auth_header.nil? || auth_header[1] == ""
|
235
|
-
auth_hash = ::Signet::OAuth1.parse_authorization_header(
|
236
|
-
auth_header[1]
|
237
|
-
).each_with_object({}) { |(key, val), acc| acc[key.downcase] = val; }
|
225
|
+
auth_hash = ::Signet::OAuth1.parse_authorization_header(auth_header[1]).to_h.transform_keys(&:downcase)
|
238
226
|
auth_hash["realm"]
|
239
227
|
end
|
240
|
-
# rubocop:disable Metrics/AbcSize
|
241
|
-
# rubocop:disable Metrics/MethodLength
|
242
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
243
228
|
|
244
229
|
##
|
245
230
|
# Authenticates a temporary credential request. If no oauth_callback is
|
@@ -308,7 +293,6 @@ module Signet
|
|
308
293
|
false
|
309
294
|
end
|
310
295
|
end
|
311
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
312
296
|
|
313
297
|
##
|
314
298
|
# Authenticates a token credential request.
|
@@ -379,8 +363,6 @@ module Signet
|
|
379
363
|
temporary_credential: temporary_credential,
|
380
364
|
realm: auth_hash["realm"] }
|
381
365
|
end
|
382
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
383
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
384
366
|
|
385
367
|
##
|
386
368
|
# Authenticates a request for a protected resource.
|
@@ -496,10 +478,6 @@ module Signet
|
|
496
478
|
token_credential: token_credential,
|
497
479
|
realm: auth_hash["realm"] }
|
498
480
|
end
|
499
|
-
# rubocop:enable Metrics/AbcSize
|
500
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
501
|
-
# rubocop:enable Metrics/MethodLength
|
502
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
503
481
|
end
|
504
482
|
end
|
505
483
|
end
|