oauth2 2.0.5 → 2.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b016b4a0d35d5e6b17d60c9417f7a456b78a38462120fff7d68021235dee6f6d
4
- data.tar.gz: 5627dc50a7dfc395f226a1209606aa63d1c8c9642ba6aba390f5ba3605567b33
3
+ metadata.gz: 6ca4e3435d4b69bcdf5607cf41d9b5f67b3671160d860cda0e8a66fdc6ca9ea7
4
+ data.tar.gz: 74170cea4731366ce12134db250ca23b937791a349b3cb62c6833a729d8964fa
5
5
  SHA512:
6
- metadata.gz: cbbfb987df74ec80833a13f2d7ae5fc090af533cfe3e0ce7146ed3f1dcec45159a8ac4447c0aacbc5ad2c9e8490d76a9c227dcb857b9fc2cc4a5b6b6634d1b41
7
- data.tar.gz: ebf819a7fcfb1c66041bb01b46f023fcfd8cb06f1762ff938795faab71e4871d00986899c592465e8424ebd40eff1e90c6a85a77e4717f4211a07ec41a148144
6
+ metadata.gz: '02886a1ab24fe6cc0f2a0624646fd07b74f1151540e4a79c2a7b50b4fa9d051bdc801d22413ee1c815e0df95f8c20185e98a8edce6e8909b276d0f3be3d3e5e3'
7
+ data.tar.gz: c23909dd4d2502a9ecd0e7ea8832d9611542af282230bd7c7b126bf76394a80acd14e8cf73be0362ea90875c63192cac4102878cfafab5cfc0419adfeb236a7d
data/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
4
4
  The format (since v2) is based on [Keep a Changelog v1](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.0.6] - 2022-07-13
8
+ ### Fixed
9
+ - [#624](https://github.com/oauth-xx/oauth2/pull/624) - Fixes a [regression](https://github.com/oauth-xx/oauth2/pull/623) in v2.0.5, where an error would be raised in refresh_token flows due to (legitimate) lack of access_token (@pboling)
10
+
7
11
  ## [2.0.5] - 2022-07-07
8
12
  ### Fixed
9
13
  - [#620](https://github.com/oauth-xx/oauth2/pull/620) - Documentation improvements, to help with upgrading (@swanson)
@@ -292,5 +296,6 @@ and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.
292
296
  [2.0.3]: https://github.com/oauth-xx/oauth2/compare/v2.0.2...v2.0.3
293
297
  [2.0.4]: https://github.com/oauth-xx/oauth2/compare/v2.0.3...v2.0.4
294
298
  [2.0.5]: https://github.com/oauth-xx/oauth2/compare/v2.0.4...v2.0.5
295
- [Unreleased]: https://github.com/oauth-xx/oauth2/compare/v2.0.5...HEAD
299
+ [2.0.6]: https://github.com/oauth-xx/oauth2/compare/v2.0.5...v2.0.6
300
+ [Unreleased]: https://github.com/oauth-xx/oauth2/compare/v2.0.6...HEAD
296
301
  [gemfiles/readme]: gemfiles/README.md
data/README.md CHANGED
@@ -32,6 +32,8 @@ See the sibling `oauth` gem for OAuth 1.0 implementations in Ruby.
32
32
 
33
33
  | Version | Release Date | Readme |
34
34
  |---------|--------------|----------------------------------------------------------|
35
+ | 2.0.6 | 2022-07-13 | https://github.com/oauth-xx/oauth2/blob/v2.0.6/README.md |
36
+ | 2.0.5 | 2022-07-07 | https://github.com/oauth-xx/oauth2/blob/v2.0.5/README.md |
35
37
  | 2.0.4 | 2022-07-01 | https://github.com/oauth-xx/oauth2/blob/v2.0.4/README.md |
36
38
  | 2.0.3 | 2022-06-28 | https://github.com/oauth-xx/oauth2/blob/v2.0.3/README.md |
37
39
  | 2.0.2 | 2022-06-24 | https://github.com/oauth-xx/oauth2/blob/v2.0.2/README.md |
@@ -143,8 +145,8 @@ The link tokens in the following sections should be kept ordered by the row and
143
145
  [🖐prs-o-img]: https://img.shields.io/github/issues-pr/oauth-xx/oauth2
144
146
  [🧮prs-c]: https://github.com/oauth-xx/oauth2/pulls?q=is%3Apr+is%3Aclosed
145
147
  [🧮prs-c-img]: https://img.shields.io/github/issues-pr-closed/oauth-xx/oauth2
146
- [📗next♻️]: https://github.com/oauth-xx/oauth2/milestone/15
147
- [📗next-img♻️]: https://img.shields.io/github/milestones/progress/oauth-xx/oauth2/15?label=Next%20Version
148
+ [📗next♻️]: https://github.com/oauth-xx/oauth2/milestone/2
149
+ [📗next-img♻️]: https://img.shields.io/github/milestones/progress/oauth-xx/oauth2/2?label=Next%20Version
148
150
 
149
151
  <!-- 3️⃣ maintenance & linting -->
150
152
  [⛳cclim-maint]: https://codeclimate.com/github/oauth-xx/oauth2/maintainability
@@ -2,6 +2,10 @@
2
2
 
3
3
  module OAuth2
4
4
  class AccessToken # rubocop:disable Metrics/ClassLength
5
+ TOKEN_KEYS_STR = %w[access_token id_token token accessToken idToken].freeze
6
+ TOKEN_KEYS_SYM = %i[access_token id_token token accessToken idToken].freeze
7
+ TOKEN_KEY_LOOKUP = TOKEN_KEYS_STR + TOKEN_KEYS_SYM
8
+
5
9
  attr_reader :client, :token, :expires_in, :expires_at, :expires_latency, :params
6
10
  attr_accessor :options, :refresh_token, :response
7
11
 
@@ -13,13 +17,13 @@ module OAuth2
13
17
  # @option hash [String] 'access_token', 'id_token', 'token', :access_token, :id_token, or :token the access token
14
18
  # @return [AccessToken] the initialized AccessToken
15
19
  def from_hash(client, hash)
16
- hash = hash.dup
17
- token = hash.delete('access_token') || hash.delete(:access_token) ||
18
- hash.delete('id_token') || hash.delete(:id_token) ||
19
- hash.delete('token') || hash.delete(:token) ||
20
- hash.delete('accessToken') || hash.delete(:accessToken) ||
21
- hash.delete('idToken') || hash.delete(:idToken)
22
- new(client, token, hash)
20
+ fresh = hash.dup
21
+ supported_keys = fresh.keys & TOKEN_KEY_LOOKUP
22
+ key = supported_keys[0]
23
+ # Having too many is sus, and may lead to bugs. Having none is fine (e.g. refresh flow doesn't need a token).
24
+ warn("OAuth2::AccessToken.from_hash: `hash` contained more than one 'token' key (#{supported_keys}); using #{key.inspect}.") if supported_keys.length > 1
25
+ token = fresh.delete(key)
26
+ new(client, token, fresh)
23
27
  end
24
28
 
25
29
  # Initializes an AccessToken from a key/value application/x-www-form-urlencoded string
@@ -35,7 +39,7 @@ module OAuth2
35
39
  # Initialize an AccessToken
36
40
  #
37
41
  # @param [Client] client the OAuth2::Client instance
38
- # @param [String] token the Access Token value
42
+ # @param [String] token the Access Token value (optional, may not be used in refresh flows)
39
43
  # @param [Hash] opts the options to create the Access Token with
40
44
  # @option opts [String] :refresh_token (nil) the refresh_token value
41
45
  # @option opts [FixNum, String] :expires_in (nil) the number of seconds in which the AccessToken will expire
@@ -50,14 +54,19 @@ module OAuth2
50
54
  @client = client
51
55
  @token = token.to_s
52
56
 
53
- if @client.options[:raise_errors] && (@token.nil? || @token.empty?)
54
- error = Error.new(opts)
55
- raise(error)
56
- end
57
57
  opts = opts.dup
58
58
  %i[refresh_token expires_in expires_at expires_latency].each do |arg|
59
59
  instance_variable_set("@#{arg}", opts.delete(arg) || opts.delete(arg.to_s))
60
60
  end
61
+ no_tokens = (@token.nil? || @token.empty?) && (@refresh_token.nil? || @refresh_token.empty?)
62
+ if no_tokens
63
+ if @client.options[:raise_errors]
64
+ error = Error.new(opts)
65
+ raise(error)
66
+ else
67
+ warn('OAuth2::AccessToken has no token')
68
+ end
69
+ end
61
70
  @expires_in ||= opts.delete('expires')
62
71
  @expires_in &&= @expires_in.to_i
63
72
  @expires_at &&= convert_expires_at(@expires_at)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OAuth2
4
4
  module Version
5
- VERSION = '2.0.5'.freeze
5
+ VERSION = '2.0.6'.freeze
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2022-07-07 00:00:00.000000000 Z
13
+ date: 2022-07-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday
@@ -307,10 +307,10 @@ licenses:
307
307
  - MIT
308
308
  metadata:
309
309
  homepage_uri: https://github.com/oauth-xx/oauth2
310
- source_code_uri: https://github.com/oauth-xx/oauth2/tree/v2.0.5
311
- changelog_uri: https://github.com/oauth-xx/oauth2/blob/v2.0.5/CHANGELOG.md
310
+ source_code_uri: https://github.com/oauth-xx/oauth2/tree/v2.0.6
311
+ changelog_uri: https://github.com/oauth-xx/oauth2/blob/v2.0.6/CHANGELOG.md
312
312
  bug_tracker_uri: https://github.com/oauth-xx/oauth2/issues
313
- documentation_uri: https://www.rubydoc.info/gems/oauth2/2.0.5
313
+ documentation_uri: https://www.rubydoc.info/gems/oauth2/2.0.6
314
314
  wiki_uri: https://github.com/oauth-xx/oauth2/wiki
315
315
  rubygems_mfa_required: 'true'
316
316
  post_install_message: |2+