oauth 0.5.14 → 0.6.2
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/CHANGELOG.md +33 -3
- data/README.md +56 -46
- data/SECURITY.md +0 -2
- data/bin/oauth +8 -4
- data/lib/oauth/cli/authorize_command.rb +58 -54
- data/lib/oauth/cli/base_command.rb +163 -159
- data/lib/oauth/cli/help_command.rb +9 -5
- data/lib/oauth/cli/query_command.rb +26 -17
- data/lib/oauth/cli/sign_command.rb +58 -52
- data/lib/oauth/cli/version_command.rb +8 -4
- data/lib/oauth/cli.rb +2 -0
- data/lib/oauth/client/action_controller_request.rb +4 -1
- data/lib/oauth/client/em_http.rb +3 -1
- data/lib/oauth/client/helper.rb +76 -72
- data/lib/oauth/client/net_http.rb +111 -104
- data/lib/oauth/client.rb +2 -0
- data/lib/oauth/consumer.rb +89 -68
- data/lib/oauth/errors/error.rb +2 -0
- data/lib/oauth/errors/problem.rb +3 -0
- data/lib/oauth/errors/unauthorized.rb +4 -0
- data/lib/oauth/errors.rb +2 -0
- data/lib/oauth/helper.rb +9 -5
- data/lib/oauth/oauth.rb +4 -2
- data/lib/oauth/oauth_test_helper.rb +2 -0
- data/lib/oauth/request_proxy/base.rb +4 -4
- data/lib/oauth/request_proxy/mock_request.rb +1 -1
- data/lib/oauth/request_proxy/net_http.rb +8 -8
- data/lib/oauth/request_proxy/rest_client_request.rb +4 -3
- data/lib/oauth/request_proxy.rb +4 -1
- data/lib/oauth/server.rb +8 -4
- data/lib/oauth/signature/base.rb +73 -65
- data/lib/oauth/signature/hmac/sha1.rb +15 -9
- data/lib/oauth/signature/hmac/sha256.rb +15 -9
- data/lib/oauth/signature/plaintext.rb +18 -20
- data/lib/oauth/signature/rsa/sha1.rb +46 -38
- data/lib/oauth/signature.rb +3 -0
- data/lib/oauth/token.rb +2 -0
- data/lib/oauth/tokens/access_token.rb +2 -0
- data/lib/oauth/tokens/consumer_token.rb +2 -0
- data/lib/oauth/tokens/request_token.rb +5 -2
- data/lib/oauth/tokens/server_token.rb +2 -0
- data/lib/oauth/tokens/token.rb +2 -0
- data/lib/oauth/version.rb +5 -1
- data/lib/oauth.rb +9 -2
- metadata +43 -32
data/lib/oauth/signature/base.rb
CHANGED
@@ -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
|
7
|
-
|
8
|
-
|
8
|
+
module OAuth
|
9
|
+
module Signature
|
10
|
+
class Base
|
11
|
+
include OAuth::Helper
|
9
12
|
|
10
|
-
|
11
|
-
|
13
|
+
attr_accessor :options
|
14
|
+
attr_reader :token_secret, :consumer_secret, :request
|
12
15
|
|
13
|
-
|
14
|
-
|
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
|
-
|
20
|
-
|
21
|
-
|
22
|
-
@options = options
|
19
|
+
@implements = signature_method
|
20
|
+
OAuth::Signature.available_methods[@implements] = self
|
21
|
+
end
|
23
22
|
|
24
|
-
|
23
|
+
def initialize(request, options = {}, &block)
|
24
|
+
raise TypeError unless request.is_a?(OAuth::RequestProxy::Base)
|
25
25
|
|
26
|
-
|
26
|
+
@request = request
|
27
|
+
@options = options
|
27
28
|
|
28
|
-
|
29
|
-
@consumer_secret = options[:consumer_secret] if options[:consumer_secret]
|
29
|
+
## consumer secret was determined beforehand
|
30
30
|
|
31
|
-
|
31
|
+
@consumer_secret = options[:consumer].secret if options[:consumer]
|
32
32
|
|
33
|
-
|
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
|
-
|
36
|
-
@token_secret = options[:token_secret] if options[:token_secret]
|
38
|
+
## token secret was determined beforehand
|
37
39
|
|
38
|
-
|
39
|
-
|
40
|
-
#
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
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
|
-
|
50
|
-
|
51
|
-
|
56
|
+
def signature
|
57
|
+
Base64.encode64(digest).chomp.delete("\n")
|
58
|
+
end
|
52
59
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
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
|
-
|
60
|
-
|
61
|
-
|
66
|
+
def verify
|
67
|
+
self == request.signature
|
68
|
+
end
|
62
69
|
|
63
|
-
|
64
|
-
|
65
|
-
|
70
|
+
def signature_base_string
|
71
|
+
request.signature_base_string
|
72
|
+
end
|
66
73
|
|
67
|
-
|
68
|
-
|
69
|
-
|
74
|
+
def body_hash
|
75
|
+
raise_instantiation_error
|
76
|
+
end
|
70
77
|
|
71
|
-
|
78
|
+
private
|
72
79
|
|
73
|
-
|
74
|
-
|
75
|
-
|
80
|
+
def token
|
81
|
+
request.token
|
82
|
+
end
|
76
83
|
|
77
|
-
|
78
|
-
|
79
|
-
|
84
|
+
def consumer_key
|
85
|
+
request.consumer_key
|
86
|
+
end
|
80
87
|
|
81
|
-
|
82
|
-
|
83
|
-
|
88
|
+
def nonce
|
89
|
+
request.nonce
|
90
|
+
end
|
84
91
|
|
85
|
-
|
86
|
-
|
87
|
-
|
92
|
+
def secret
|
93
|
+
"#{escape(consumer_secret)}&#{escape(token_secret)}"
|
94
|
+
end
|
88
95
|
|
89
|
-
|
90
|
-
|
91
|
-
|
96
|
+
def digest
|
97
|
+
raise_instantiation_error
|
98
|
+
end
|
92
99
|
|
93
|
-
|
94
|
-
|
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
|
4
|
-
|
5
|
-
|
5
|
+
module OAuth
|
6
|
+
module Signature
|
7
|
+
module HMAC
|
8
|
+
class SHA1 < OAuth::Signature::Base
|
9
|
+
implements "hmac-sha1"
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
11
|
+
def body_hash
|
12
|
+
Base64.encode64(OpenSSL::Digest.digest("SHA1", request.body || "")).chomp.delete("\n")
|
13
|
+
end
|
10
14
|
|
11
|
-
|
15
|
+
private
|
12
16
|
|
13
|
-
|
14
|
-
|
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
|
4
|
-
|
5
|
-
|
5
|
+
module OAuth
|
6
|
+
module Signature
|
7
|
+
module HMAC
|
8
|
+
class SHA256 < OAuth::Signature::Base
|
9
|
+
implements "hmac-sha256"
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
11
|
+
def body_hash
|
12
|
+
Base64.encode64(OpenSSL::Digest.digest("SHA256", request.body || "")).chomp.delete("\n")
|
13
|
+
end
|
10
14
|
|
11
|
-
|
15
|
+
private
|
12
16
|
|
13
|
-
|
14
|
-
|
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
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
class PLAINTEXT < Base
|
5
|
-
implements "plaintext"
|
3
|
+
require "oauth/signature/base"
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
module OAuth
|
6
|
+
module Signature
|
7
|
+
class PLAINTEXT < Base
|
8
|
+
implements "plaintext"
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
def signature
|
11
|
+
signature_base_string
|
12
|
+
end
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
def body_hash
|
20
|
-
nil
|
21
|
-
end
|
14
|
+
def ==(other)
|
15
|
+
signature.to_s == other.to_s
|
16
|
+
end
|
22
17
|
|
23
|
-
|
18
|
+
def signature_base_string
|
19
|
+
secret
|
20
|
+
end
|
24
21
|
|
25
|
-
|
26
|
-
|
22
|
+
def body_hash
|
23
|
+
nil
|
24
|
+
end
|
27
25
|
end
|
28
26
|
end
|
29
27
|
end
|
@@ -1,50 +1,58 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
class SHA1 < OAuth::Signature::Base
|
5
|
-
implements "rsa-sha1"
|
3
|
+
require "oauth/signature/base"
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
module OAuth
|
6
|
+
module Signature
|
7
|
+
module RSA
|
8
|
+
class SHA1 < OAuth::Signature::Base
|
9
|
+
implements "rsa-sha1"
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
22
|
-
|
23
|
-
|
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
|
-
|
27
|
+
def body_hash
|
28
|
+
Base64.encode64(OpenSSL::Digest.digest("SHA1", request.body || "")).chomp.delete("\n")
|
29
|
+
end
|
26
30
|
|
27
|
-
|
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
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
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
|
data/lib/oauth/signature.rb
CHANGED
@@ -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
|
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,
|
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 =
|
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?
|
data/lib/oauth/tokens/token.rb
CHANGED
data/lib/oauth/version.rb
CHANGED
data/lib/oauth.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
|
2
|
-
|
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.
|
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:
|
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: :
|
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:
|
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:
|
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: '
|
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: '
|
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.
|
258
|
-
changelog_uri: https://github.com/oauth-xx/oauth-ruby/blob/v0.
|
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.
|
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.
|
279
|
+
You have installed oauth version 0.6.2, congratulations!
|
266
280
|
|
267
|
-
|
268
|
-
|
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.
|
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
|
-
...
|