signet 0.14.0 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +11 -0
- data/CHANGELOG.md +31 -0
- 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 +8 -30
- 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 +12 -22
- data/lib/signet/oauth_2/client.rb +37 -58
- data/lib/signet/oauth_2.rb +10 -14
- data/lib/signet/version.rb +1 -1
- data/lib/signet.rb +5 -8
- metadata +25 -39
- 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 -1010
- 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: 13bd869943add17b04e66089d5c1a5d34a8d6053c55fb4dc389bc9e3a83c36ae
|
4
|
+
data.tar.gz: 17a0094e4ef483d07ea945155956d81a06423a8d57abc725d326b49c2cb62171
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6817470226e95dd4535bb7316b98c2b95d6ef70a8b9a1466656018fc9e642a02901390e0b40562e7ac7ea3a6acfefdb07d3317c6879453bb23ca07090bd9643
|
7
|
+
data.tar.gz: d49ad82ef1cbf8fab14b74370f07e3567c3f2594045e3cf82ec5f72f69f93ebe47954bff340fe7c472fb31f6269bbe012fec8e24f369167e59a519bfc02ff13b
|
data/.yardopts
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,34 @@
|
|
1
|
+
# Release History
|
2
|
+
|
3
|
+
### 0.17.0 (2022-06-23)
|
4
|
+
|
5
|
+
* Updated minimum Ruby version to 2.6
|
6
|
+
|
7
|
+
### 0.16.1 (2022-02-24)
|
8
|
+
|
9
|
+
#### Bug Fixes
|
10
|
+
|
11
|
+
* Support Faraday 2
|
12
|
+
|
13
|
+
### 0.16.0 (2021-09-03)
|
14
|
+
|
15
|
+
#### Features
|
16
|
+
|
17
|
+
* Support for fetching an access token with basic auth
|
18
|
+
|
19
|
+
#### Bug Fixes
|
20
|
+
|
21
|
+
* Remove extraneous files from the gem
|
22
|
+
* Require addressable 2.8 to remediate vulnerability
|
23
|
+
|
24
|
+
### 0.15.0 (2021-03-04)
|
25
|
+
|
26
|
+
* Drop support for Ruby 2.4 and add support for Ruby 3.0
|
27
|
+
|
28
|
+
### 0.14.1 / 2021-01-27
|
29
|
+
|
30
|
+
* Fix OAuth1 signature with duplicate query param names
|
31
|
+
|
1
32
|
### 0.14.0 / 2020-03-31
|
2
33
|
|
3
34
|
* Support for fetching ID tokens from google oauth2 endpoint.
|
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.
|
@@ -476,7 +458,7 @@ module Signet
|
|
476
458
|
# can't have been signed correctly(5849#3.4.1.3)
|
477
459
|
unless post_parameters.sort == auth_hash.reject { |k, _v| k.index "oauth_" }.to_a.sort
|
478
460
|
raise MalformedAuthorizationError, "Request is of type application/x-www-form-urlencoded " \
|
479
|
-
|
461
|
+
"but Authentication header did not include form values"
|
480
462
|
end
|
481
463
|
end
|
482
464
|
|
@@ -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
|