oauth 0.5.14 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -3
  3. data/README.md +56 -46
  4. data/SECURITY.md +0 -2
  5. data/bin/oauth +8 -4
  6. data/lib/oauth/cli/authorize_command.rb +58 -54
  7. data/lib/oauth/cli/base_command.rb +163 -159
  8. data/lib/oauth/cli/help_command.rb +9 -5
  9. data/lib/oauth/cli/query_command.rb +26 -17
  10. data/lib/oauth/cli/sign_command.rb +58 -52
  11. data/lib/oauth/cli/version_command.rb +8 -4
  12. data/lib/oauth/cli.rb +2 -0
  13. data/lib/oauth/client/action_controller_request.rb +4 -1
  14. data/lib/oauth/client/em_http.rb +3 -1
  15. data/lib/oauth/client/helper.rb +76 -72
  16. data/lib/oauth/client/net_http.rb +111 -104
  17. data/lib/oauth/client.rb +2 -0
  18. data/lib/oauth/consumer.rb +89 -68
  19. data/lib/oauth/errors/error.rb +2 -0
  20. data/lib/oauth/errors/problem.rb +3 -0
  21. data/lib/oauth/errors/unauthorized.rb +4 -0
  22. data/lib/oauth/errors.rb +2 -0
  23. data/lib/oauth/helper.rb +9 -5
  24. data/lib/oauth/oauth.rb +4 -2
  25. data/lib/oauth/oauth_test_helper.rb +2 -0
  26. data/lib/oauth/request_proxy/base.rb +4 -4
  27. data/lib/oauth/request_proxy/mock_request.rb +1 -1
  28. data/lib/oauth/request_proxy/net_http.rb +8 -8
  29. data/lib/oauth/request_proxy/rest_client_request.rb +4 -3
  30. data/lib/oauth/request_proxy.rb +4 -1
  31. data/lib/oauth/server.rb +8 -4
  32. data/lib/oauth/signature/base.rb +73 -65
  33. data/lib/oauth/signature/hmac/sha1.rb +15 -9
  34. data/lib/oauth/signature/hmac/sha256.rb +15 -9
  35. data/lib/oauth/signature/plaintext.rb +18 -20
  36. data/lib/oauth/signature/rsa/sha1.rb +46 -38
  37. data/lib/oauth/signature.rb +3 -0
  38. data/lib/oauth/token.rb +2 -0
  39. data/lib/oauth/tokens/access_token.rb +2 -0
  40. data/lib/oauth/tokens/consumer_token.rb +2 -0
  41. data/lib/oauth/tokens/request_token.rb +5 -2
  42. data/lib/oauth/tokens/server_token.rb +2 -0
  43. data/lib/oauth/tokens/token.rb +2 -0
  44. data/lib/oauth/version.rb +5 -1
  45. data/lib/oauth.rb +9 -2
  46. metadata +43 -32
@@ -1,97 +1,105 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "oauth/signature"
2
4
  require "oauth/helper"
3
5
  require "oauth/request_proxy/base"
4
6
  require "base64"
5
7
 
6
- module OAuth::Signature
7
- class Base
8
- include OAuth::Helper
8
+ module OAuth
9
+ module Signature
10
+ class Base
11
+ include OAuth::Helper
9
12
 
10
- attr_accessor :options
11
- attr_reader :token_secret, :consumer_secret, :request
13
+ attr_accessor :options
14
+ attr_reader :token_secret, :consumer_secret, :request
12
15
 
13
- def self.implements(signature_method = nil)
14
- return @implements if signature_method.nil?
15
- @implements = signature_method
16
- OAuth::Signature.available_methods[@implements] = self
17
- end
16
+ def self.implements(signature_method = nil)
17
+ return @implements if signature_method.nil?
18
18
 
19
- def initialize(request, options = {}, &block)
20
- raise TypeError unless request.is_a?(OAuth::RequestProxy::Base)
21
- @request = request
22
- @options = options
19
+ @implements = signature_method
20
+ OAuth::Signature.available_methods[@implements] = self
21
+ end
23
22
 
24
- ## consumer secret was determined beforehand
23
+ def initialize(request, options = {}, &block)
24
+ raise TypeError unless request.is_a?(OAuth::RequestProxy::Base)
25
25
 
26
- @consumer_secret = options[:consumer].secret if options[:consumer]
26
+ @request = request
27
+ @options = options
27
28
 
28
- # presence of :consumer_secret option will override any Consumer that's provided
29
- @consumer_secret = options[:consumer_secret] if options[:consumer_secret]
29
+ ## consumer secret was determined beforehand
30
30
 
31
- ## token secret was determined beforehand
31
+ @consumer_secret = options[:consumer].secret if options[:consumer]
32
32
 
33
- @token_secret = options[:token].secret if options[:token]
33
+ # presence of :consumer_secret option will override any Consumer that's provided
34
+ if options[:consumer_secret]
35
+ @consumer_secret = options[:consumer_secret]
36
+ end
34
37
 
35
- # presence of :token_secret option will override any Token that's provided
36
- @token_secret = options[:token_secret] if options[:token_secret]
38
+ ## token secret was determined beforehand
37
39
 
38
- # override secrets based on the values returned from the block (if any)
39
- if block_given?
40
- # consumer secret and token secret need to be looked up based on pieces of the request
41
- secrets = yield block.arity == 1 ? request : [token, consumer_key, nonce, request.timestamp]
42
- if secrets.is_a?(Array) && secrets.size == 2
43
- @token_secret = secrets[0]
44
- @consumer_secret = secrets[1]
40
+ @token_secret = options[:token].secret if options[:token]
41
+
42
+ # presence of :token_secret option will override any Token that's provided
43
+ @token_secret = options[:token_secret] if options[:token_secret]
44
+
45
+ # override secrets based on the values returned from the block (if any)
46
+ if block
47
+ # consumer secret and token secret need to be looked up based on pieces of the request
48
+ secrets = yield block.arity == 1 ? request : [token, consumer_key, nonce, request.timestamp]
49
+ if secrets.is_a?(Array) && secrets.size == 2
50
+ @token_secret = secrets[0]
51
+ @consumer_secret = secrets[1]
52
+ end
45
53
  end
46
54
  end
47
- end
48
55
 
49
- def signature
50
- Base64.encode64(digest).chomp.delete("\n")
51
- end
56
+ def signature
57
+ Base64.encode64(digest).chomp.delete("\n")
58
+ end
52
59
 
53
- def ==(cmp_signature)
54
- check = signature.bytesize ^ cmp_signature.bytesize
55
- signature.bytes.zip(cmp_signature.bytes) { |x, y| check |= x ^ y.to_i }
56
- check.zero?
57
- end
60
+ def ==(other)
61
+ check = signature.bytesize ^ other.bytesize
62
+ signature.bytes.zip(other.bytes) { |x, y| check |= x ^ y.to_i }
63
+ check.zero?
64
+ end
58
65
 
59
- def verify
60
- self == request.signature
61
- end
66
+ def verify
67
+ self == request.signature
68
+ end
62
69
 
63
- def signature_base_string
64
- request.signature_base_string
65
- end
70
+ def signature_base_string
71
+ request.signature_base_string
72
+ end
66
73
 
67
- def body_hash
68
- raise_instantiation_error
69
- end
74
+ def body_hash
75
+ raise_instantiation_error
76
+ end
70
77
 
71
- private
78
+ private
72
79
 
73
- def token
74
- request.token
75
- end
80
+ def token
81
+ request.token
82
+ end
76
83
 
77
- def consumer_key
78
- request.consumer_key
79
- end
84
+ def consumer_key
85
+ request.consumer_key
86
+ end
80
87
 
81
- def nonce
82
- request.nonce
83
- end
88
+ def nonce
89
+ request.nonce
90
+ end
84
91
 
85
- def secret
86
- "#{escape(consumer_secret)}&#{escape(token_secret)}"
87
- end
92
+ def secret
93
+ "#{escape(consumer_secret)}&#{escape(token_secret)}"
94
+ end
88
95
 
89
- def digest
90
- raise_instantiation_error
91
- end
96
+ def digest
97
+ raise_instantiation_error
98
+ end
92
99
 
93
- def raise_instantiation_error
94
- raise NotImplementedError, "Cannot instantiate #{self.class.name} class directly."
100
+ def raise_instantiation_error
101
+ raise NotImplementedError, "Cannot instantiate #{self.class.name} class directly."
102
+ end
95
103
  end
96
104
  end
97
105
  end
@@ -1,17 +1,23 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "oauth/signature/base"
2
4
 
3
- module OAuth::Signature::HMAC
4
- class SHA1 < OAuth::Signature::Base
5
- implements "hmac-sha1"
5
+ module OAuth
6
+ module Signature
7
+ module HMAC
8
+ class SHA1 < OAuth::Signature::Base
9
+ implements "hmac-sha1"
6
10
 
7
- def body_hash
8
- Base64.encode64(OpenSSL::Digest::SHA1.digest(request.body || "")).chomp.delete("\n")
9
- end
11
+ def body_hash
12
+ Base64.encode64(OpenSSL::Digest.digest("SHA1", request.body || "")).chomp.delete("\n")
13
+ end
10
14
 
11
- private
15
+ private
12
16
 
13
- def digest
14
- OpenSSL::HMAC.digest(OpenSSL::Digest.new("sha1"), secret, signature_base_string)
17
+ def digest
18
+ OpenSSL::HMAC.digest(OpenSSL::Digest.new("sha1"), secret, signature_base_string)
19
+ end
20
+ end
15
21
  end
16
22
  end
17
23
  end
@@ -1,17 +1,23 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "oauth/signature/base"
2
4
 
3
- module OAuth::Signature::HMAC
4
- class SHA256 < OAuth::Signature::Base
5
- implements "hmac-sha256"
5
+ module OAuth
6
+ module Signature
7
+ module HMAC
8
+ class SHA256 < OAuth::Signature::Base
9
+ implements "hmac-sha256"
6
10
 
7
- def body_hash
8
- Base64.encode64(OpenSSL::Digest::SHA256.digest(request.body || "")).chomp.delete("\n")
9
- end
11
+ def body_hash
12
+ Base64.encode64(OpenSSL::Digest.digest("SHA256", request.body || "")).chomp.delete("\n")
13
+ end
10
14
 
11
- private
15
+ private
12
16
 
13
- def digest
14
- OpenSSL::HMAC.digest(OpenSSL::Digest.new("sha256"), secret, signature_base_string)
17
+ def digest
18
+ OpenSSL::HMAC.digest(OpenSSL::Digest.new("sha256"), secret, signature_base_string)
19
+ end
20
+ end
15
21
  end
16
22
  end
17
23
  end
@@ -1,29 +1,27 @@
1
- require "oauth/signature/base"
1
+ # frozen_string_literal: true
2
2
 
3
- module OAuth::Signature
4
- class PLAINTEXT < Base
5
- implements "plaintext"
3
+ require "oauth/signature/base"
6
4
 
7
- def signature
8
- signature_base_string
9
- end
5
+ module OAuth
6
+ module Signature
7
+ class PLAINTEXT < Base
8
+ implements "plaintext"
10
9
 
11
- def ==(cmp_signature)
12
- signature.to_s == cmp_signature.to_s
13
- end
10
+ def signature
11
+ signature_base_string
12
+ end
14
13
 
15
- def signature_base_string
16
- secret
17
- end
18
-
19
- def body_hash
20
- nil
21
- end
14
+ def ==(other)
15
+ signature.to_s == other.to_s
16
+ end
22
17
 
23
- private
18
+ def signature_base_string
19
+ secret
20
+ end
24
21
 
25
- def secret
26
- super
22
+ def body_hash
23
+ nil
24
+ end
27
25
  end
28
26
  end
29
27
  end
@@ -1,50 +1,58 @@
1
- require "oauth/signature/base"
1
+ # frozen_string_literal: true
2
2
 
3
- module OAuth::Signature::RSA
4
- class SHA1 < OAuth::Signature::Base
5
- implements "rsa-sha1"
3
+ require "oauth/signature/base"
6
4
 
7
- def ==(cmp_signature)
8
- public_key.verify(OpenSSL::Digest::SHA1.new, Base64.decode64(cmp_signature.is_a?(Array) ? cmp_signature.first : cmp_signature), signature_base_string)
9
- end
5
+ module OAuth
6
+ module Signature
7
+ module RSA
8
+ class SHA1 < OAuth::Signature::Base
9
+ implements "rsa-sha1"
10
10
 
11
- def public_key
12
- if consumer_secret.is_a?(String)
13
- decode_public_key
14
- elsif consumer_secret.is_a?(OpenSSL::X509::Certificate)
15
- consumer_secret.public_key
16
- else
17
- consumer_secret
18
- end
19
- end
11
+ def ==(other)
12
+ public_key.verify(OpenSSL::Digest.new("SHA1"),
13
+ Base64.decode64(other.is_a?(Array) ? other.first : other), signature_base_string)
14
+ end
20
15
 
21
- def body_hash
22
- Base64.encode64(OpenSSL::Digest::SHA1.digest(request.body || "")).chomp.delete("\n")
23
- end
16
+ def public_key
17
+ case consumer_secret
18
+ when String
19
+ decode_public_key
20
+ when OpenSSL::X509::Certificate
21
+ consumer_secret.public_key
22
+ else
23
+ consumer_secret
24
+ end
25
+ end
24
26
 
25
- private
27
+ def body_hash
28
+ Base64.encode64(OpenSSL::Digest.digest("SHA1", request.body || "")).chomp.delete("\n")
29
+ end
26
30
 
27
- def decode_public_key
28
- case consumer_secret
29
- when /-----BEGIN CERTIFICATE-----/
30
- OpenSSL::X509::Certificate.new(consumer_secret).public_key
31
- else
32
- OpenSSL::PKey::RSA.new(consumer_secret)
33
- end
34
- end
31
+ private
35
32
 
36
- def digest
37
- private_key = OpenSSL::PKey::RSA.new(
38
- if options[:private_key_file]
39
- IO.read(options[:private_key_file])
40
- elsif options[:private_key]
41
- options[:private_key]
42
- else
43
- consumer_secret
33
+ def decode_public_key
34
+ case consumer_secret
35
+ when /-----BEGIN CERTIFICATE-----/
36
+ OpenSSL::X509::Certificate.new(consumer_secret).public_key
37
+ else
38
+ OpenSSL::PKey::RSA.new(consumer_secret)
39
+ end
44
40
  end
45
- )
46
41
 
47
- private_key.sign(OpenSSL::Digest::SHA1.new, signature_base_string)
42
+ def digest
43
+ private_key = OpenSSL::PKey::RSA.new(
44
+ if options[:private_key_file]
45
+ File.read(options[:private_key_file])
46
+ elsif options[:private_key]
47
+ options[:private_key]
48
+ else
49
+ consumer_secret
50
+ end
51
+ )
52
+
53
+ private_key.sign(OpenSSL::Digest.new("SHA1"), signature_base_string)
54
+ end
55
+ end
48
56
  end
49
57
  end
50
58
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OAuth
2
4
  module Signature
3
5
  # Returns a list of available signature methods
@@ -15,6 +17,7 @@ module OAuth
15
17
  ((c = request.options[:consumer]) && c.options[:signature_method]) ||
16
18
  "").downcase]
17
19
  raise UnknownSignatureMethod, request.signature_method unless klass
20
+
18
21
  klass.new(request, options, &block)
19
22
  end
20
23
 
data/lib/oauth/token.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # this exists for backwards-compatibility
2
4
 
3
5
  require "oauth/tokens/token"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OAuth
2
4
  # The Access Token is used for the actual "real" web service calls that you perform against the server
3
5
  class AccessToken < ConsumerToken
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OAuth
2
4
  # Superclass for tokens used by OAuth Clients
3
5
  class ConsumerToken < Token
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OAuth
2
4
  # The RequestToken is used for the initial Request.
3
5
  # This is normally created by the Consumer object.
@@ -23,7 +25,8 @@ module OAuth
23
25
 
24
26
  # exchange for AccessToken on server
25
27
  def get_access_token(options = {}, *arguments)
26
- response = consumer.token_request(consumer.http_method, (consumer.access_token_url? ? consumer.access_token_url : consumer.access_token_path), self, options, *arguments)
28
+ response = consumer.token_request(consumer.http_method,
29
+ (consumer.access_token_url? ? consumer.access_token_url : consumer.access_token_path), self, options, *arguments)
27
30
  OAuth::AccessToken.from_hash(consumer, response)
28
31
  end
29
32
 
@@ -33,7 +36,7 @@ module OAuth
33
36
  def build_url(base_url, params)
34
37
  uri = URI.parse(base_url.to_s)
35
38
  queries = {}
36
- queries = Hash[URI.decode_www_form(uri.query)] if uri.query
39
+ queries = URI.decode_www_form(uri.query).to_h if uri.query
37
40
  # TODO: doesn't handle array values correctly
38
41
  queries.merge!(params) if params
39
42
  uri.query = URI.encode_www_form(queries) unless queries.empty?
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OAuth
2
4
  # Used on the server for generating tokens
3
5
  class ServerToken < Token
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OAuth
2
4
  # Superclass for the various tokens used by OAuth
3
5
  class Token
data/lib/oauth/version.rb CHANGED
@@ -1,3 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OAuth
2
- VERSION = "0.5.14".freeze
4
+ module Version
5
+ VERSION = "0.6.2"
6
+ end
3
7
  end
data/lib/oauth.rb CHANGED
@@ -1,5 +1,8 @@
1
- root = File.dirname(__FILE__)
2
- $LOAD_PATH << root unless $LOAD_PATH.include?(root)
1
+ # frozen_string_literal: true
2
+
3
+ # third party gems
4
+ require "snaky_hash"
5
+ require "version_gem"
3
6
 
4
7
  require "oauth/version"
5
8
 
@@ -11,3 +14,7 @@ require "oauth/signature/hmac/sha1"
11
14
  require "oauth/signature/hmac/sha256"
12
15
  require "oauth/signature/rsa/sha1"
13
16
  require "oauth/request_proxy/mock_request"
17
+
18
+ OAuth::Version.class_eval do
19
+ extend VersionGem::Basic
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.14
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pelle Braendgaard
@@ -19,19 +19,33 @@ cert_chain: []
19
19
  date: 2022-08-29 00:00:00.000000000 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: curb
22
+ name: snaky_hash
23
23
  requirement: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
28
- type: :development
27
+ version: '2.0'
28
+ type: :runtime
29
29
  prerelease: false
30
30
  version_requirements: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: '2.0'
35
+ - !ruby/object:Gem::Dependency
36
+ name: version_gem
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.1'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.1'
35
49
  - !ruby/object:Gem::Dependency
36
50
  name: em-http-request
37
51
  requirement: !ruby/object:Gem::Requirement
@@ -64,16 +78,16 @@ dependencies:
64
78
  name: minitest
65
79
  requirement: !ruby/object:Gem::Requirement
66
80
  requirements:
67
- - - "<"
81
+ - - "~>"
68
82
  - !ruby/object:Gem::Version
69
- version: '5.16'
83
+ version: 5.15.0
70
84
  type: :development
71
85
  prerelease: false
72
86
  version_requirements: !ruby/object:Gem::Requirement
73
87
  requirements:
74
- - - "<"
88
+ - - "~>"
75
89
  - !ruby/object:Gem::Version
76
- version: '5.16'
90
+ version: 5.15.0
77
91
  - !ruby/object:Gem::Dependency
78
92
  name: mocha
79
93
  requirement: !ruby/object:Gem::Requirement
@@ -92,16 +106,16 @@ dependencies:
92
106
  name: rack
93
107
  requirement: !ruby/object:Gem::Requirement
94
108
  requirements:
95
- - - ">="
109
+ - - "~>"
96
110
  - !ruby/object:Gem::Version
97
- version: '0'
111
+ version: '2.0'
98
112
  type: :development
99
113
  prerelease: false
100
114
  version_requirements: !ruby/object:Gem::Requirement
101
115
  requirements:
102
- - - ">="
116
+ - - "~>"
103
117
  - !ruby/object:Gem::Version
104
- version: '0'
118
+ version: '2.0'
105
119
  - !ruby/object:Gem::Dependency
106
120
  name: rack-test
107
121
  requirement: !ruby/object:Gem::Requirement
@@ -120,16 +134,16 @@ dependencies:
120
134
  name: rake
121
135
  requirement: !ruby/object:Gem::Requirement
122
136
  requirements:
123
- - - ">="
137
+ - - "~>"
124
138
  - !ruby/object:Gem::Version
125
- version: '0'
139
+ version: '13.0'
126
140
  type: :development
127
141
  prerelease: false
128
142
  version_requirements: !ruby/object:Gem::Requirement
129
143
  requirements:
130
- - - ">="
144
+ - - "~>"
131
145
  - !ruby/object:Gem::Version
132
- version: '0'
146
+ version: '13.0'
133
147
  - !ruby/object:Gem::Dependency
134
148
  name: rest-client
135
149
  requirement: !ruby/object:Gem::Requirement
@@ -150,14 +164,14 @@ dependencies:
150
164
  requirements:
151
165
  - - "~>"
152
166
  - !ruby/object:Gem::Version
153
- version: '4.0'
167
+ version: '12.0'
154
168
  type: :development
155
169
  prerelease: false
156
170
  version_requirements: !ruby/object:Gem::Requirement
157
171
  requirements:
158
172
  - - "~>"
159
173
  - !ruby/object:Gem::Version
160
- version: '4.0'
174
+ version: '12.0'
161
175
  - !ruby/object:Gem::Dependency
162
176
  name: typhoeus
163
177
  requirement: !ruby/object:Gem::Requirement
@@ -254,19 +268,18 @@ licenses:
254
268
  - MIT
255
269
  metadata:
256
270
  homepage_uri: https://github.com/oauth-xx/oauth-ruby
257
- source_code_uri: https://github.com/oauth-xx/oauth-ruby/tree/v0.5.14
258
- changelog_uri: https://github.com/oauth-xx/oauth-ruby/blob/v0.5.14/CHANGELOG.md
271
+ source_code_uri: https://github.com/oauth-xx/oauth-ruby/tree/v0.6.2
272
+ changelog_uri: https://github.com/oauth-xx/oauth-ruby/blob/v0.6.2/CHANGELOG.md
259
273
  bug_tracker_uri: https://github.com/oauth-xx/oauth-ruby/issues
260
- documentation_uri: https://www.rubydoc.info/gems/oauth/0.5.14
274
+ documentation_uri: https://www.rubydoc.info/gems/oauth/0.6.2
261
275
  wiki_uri: https://github.com/oauth-xx/oauth-ruby/wiki
262
276
  rubygems_mfa_required: 'true'
263
- post_install_message: |2+
277
+ post_install_message: |2
264
278
 
265
- You have installed oauth version 0.5.14, congratulations!
279
+ You have installed oauth version 0.6.2, congratulations!
266
280
 
267
- Support for the 0.5.x series will end by April, 2023. Please upgrade to 0.6.x or 1.x as soon as possible!
268
- For 0.6.x the only breaking change will be dropped support for Ruby 2.0, 2.1, 2.2, and 2.3.
269
- For 1.x the only breaking change will be dropped support for Ruby 2.4, 2.5, and 2.6.
281
+ Non-commercial support for the 0.6.x series will end by April, 2024. Please upgrade to 1.0.x as soon as possible!
282
+ The only breaking change will be dropped support for Ruby 2.4, 2.5, and 2.6.
270
283
 
271
284
  Please see:
272
285
  • https://github.com/oauth-xx/oauth-ruby/blob/main/SECURITY.md
@@ -287,7 +300,6 @@ post_install_message: |2+
287
300
  Please report issues, and support the project!
288
301
 
289
302
  Thanks, |7eter l-|. l3oling
290
-
291
303
  rdoc_options: []
292
304
  require_paths:
293
305
  - lib
@@ -295,7 +307,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
295
307
  requirements:
296
308
  - - ">="
297
309
  - !ruby/object:Gem::Version
298
- version: '2.0'
310
+ version: '2.4'
299
311
  required_rubygems_version: !ruby/object:Gem::Requirement
300
312
  requirements:
301
313
  - - ">="
@@ -307,4 +319,3 @@ signing_key:
307
319
  specification_version: 4
308
320
  summary: OAuth Core Ruby implementation
309
321
  test_files: []
310
- ...