oauth2 0.9.4 → 1.0.0
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/README.md +1 -4
- data/Rakefile +3 -3
- data/lib/oauth2.rb +1 -0
- data/lib/oauth2/mac_token.rb +124 -0
- data/lib/oauth2/version.rb +3 -3
- data/oauth2.gemspec +2 -2
- data/spec/helper.rb +3 -2
- data/spec/oauth2/access_token_spec.rb +0 -3
- data/spec/oauth2/client_spec.rb +2 -2
- data/spec/oauth2/mac_token_spec.rb +119 -0
- metadata +35 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a7e97c3a76d87a0499aa0cd5f9b908df43f5b91
|
4
|
+
data.tar.gz: 390e6188e44d5e7eb909a29141b63dc05276608d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe86948ffabdc2334b89db64fb4cb6c98a65f93198b543b380cab70c9d18daa47fcf92272678f5794caf23827e8e4e93f3d053d106d98a0438b4f1befb86301b
|
7
|
+
data.tar.gz: c5a507967b19c5019aaa4fd8f52448c78b4d13ada1041705d0f6526bc96b2b04311e063f7f5f98cd4a6520c61ab79eb841626c6e6dcf510bdb7a94c801e52ba1
|
data/README.md
CHANGED
@@ -12,10 +12,7 @@
|
|
12
12
|
[codeclimate]: https://codeclimate.com/github/intridea/oauth2
|
13
13
|
[coveralls]: https://coveralls.io/r/intridea/oauth2
|
14
14
|
|
15
|
-
A Ruby wrapper for the OAuth 2.0 specification.
|
16
|
-
being built first to solve the pragmatic process of connecting to existing
|
17
|
-
OAuth 2.0 endpoints (e.g. Facebook) with the goal of building it up to meet
|
18
|
-
the entire specification over time.
|
15
|
+
A Ruby wrapper for the OAuth 2.0 specification.
|
19
16
|
|
20
17
|
## Installation
|
21
18
|
gem install oauth2
|
data/Rakefile
CHANGED
@@ -19,10 +19,10 @@ end
|
|
19
19
|
|
20
20
|
begin
|
21
21
|
require 'rubocop/rake_task'
|
22
|
-
|
22
|
+
RuboCop::RakeTask.new
|
23
23
|
rescue LoadError
|
24
24
|
task :rubocop do
|
25
|
-
$stderr.puts '
|
25
|
+
$stderr.puts 'RuboCop is disabled'
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -33,7 +33,7 @@ end
|
|
33
33
|
|
34
34
|
require 'yardstick/rake/verify'
|
35
35
|
Yardstick::Rake::Verify.new do |verify|
|
36
|
-
verify.threshold = 58.
|
36
|
+
verify.threshold = 58.8
|
37
37
|
end
|
38
38
|
|
39
39
|
task :default => [:spec, :rubocop, :verify_measurements]
|
data/lib/oauth2.rb
CHANGED
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'digest'
|
3
|
+
require 'openssl'
|
4
|
+
require 'securerandom'
|
5
|
+
|
6
|
+
module OAuth2
|
7
|
+
class MACToken < AccessToken
|
8
|
+
# Generates a MACToken from an AccessToken and secret
|
9
|
+
#
|
10
|
+
# @param [AccessToken] token the OAuth2::Token instance
|
11
|
+
# @option [String] secret the secret key value
|
12
|
+
# @param [Hash] opts the options to create the Access Token with
|
13
|
+
# @see MACToken#initialize
|
14
|
+
def self.from_access_token(token, secret, options = {})
|
15
|
+
new(token.client, token.token, secret, token.params.merge(
|
16
|
+
:refresh_token => token.refresh_token,
|
17
|
+
:expires_in => token.expires_in,
|
18
|
+
:expires_at => token.expires_at
|
19
|
+
).merge(options))
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :secret, :algorithm
|
23
|
+
|
24
|
+
# Initalize a MACToken
|
25
|
+
#
|
26
|
+
# @param [Client] client the OAuth2::Client instance
|
27
|
+
# @param [String] token the Access Token value
|
28
|
+
# @option [String] secret the secret key value
|
29
|
+
# @param [Hash] opts the options to create the Access Token with
|
30
|
+
# @option opts [String] :refresh_token (nil) the refresh_token value
|
31
|
+
# @option opts [FixNum, String] :expires_in (nil) the number of seconds in which the AccessToken will expire
|
32
|
+
# @option opts [FixNum, String] :expires_at (nil) the epoch time in seconds in which AccessToken will expire
|
33
|
+
# @option opts [FixNum, String] :algorithm (hmac-sha-256) the algorithm to use for the HMAC digest (one of 'hmac-sha-256', 'hmac-sha-1')
|
34
|
+
def initialize(client, token, secret, opts = {})
|
35
|
+
@secret = secret
|
36
|
+
self.algorithm = opts.delete(:algorithm) || 'hmac-sha-256'
|
37
|
+
|
38
|
+
super(client, token, opts)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Make a request with the MAC Token
|
42
|
+
#
|
43
|
+
# @param [Symbol] verb the HTTP request method
|
44
|
+
# @param [String] path the HTTP URL path of the request
|
45
|
+
# @param [Hash] opts the options to make the request with
|
46
|
+
# @see Client#request
|
47
|
+
def request(verb, path, opts = {}, &block)
|
48
|
+
url = client.connection.build_url(path, opts[:params]).to_s
|
49
|
+
|
50
|
+
opts[:headers] ||= {}
|
51
|
+
opts[:headers].merge!('Authorization' => header(verb, url))
|
52
|
+
|
53
|
+
@client.request(verb, path, opts, &block)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Get the headers hash (always an empty hash)
|
57
|
+
def headers
|
58
|
+
{}
|
59
|
+
end
|
60
|
+
|
61
|
+
# Generate the MAC header
|
62
|
+
#
|
63
|
+
# @param [Symbol] verb the HTTP request method
|
64
|
+
# @param [String] url the HTTP URL path of the request
|
65
|
+
def header(verb, url)
|
66
|
+
timestamp = Time.now.utc.to_i
|
67
|
+
nonce = Digest::MD5.hexdigest([timestamp, SecureRandom.hex].join(':'))
|
68
|
+
|
69
|
+
uri = URI.parse(url)
|
70
|
+
|
71
|
+
fail(ArgumentError, "could not parse \"#{url}\" into URI") unless uri.is_a?(URI::HTTP)
|
72
|
+
|
73
|
+
mac = signature(timestamp, nonce, verb, uri)
|
74
|
+
|
75
|
+
"MAC id=\"#{token}\", ts=\"#{timestamp}\", nonce=\"#{nonce}\", mac=\"#{mac}\""
|
76
|
+
end
|
77
|
+
|
78
|
+
# Generate the Base64-encoded HMAC digest signature
|
79
|
+
#
|
80
|
+
# @param [Fixnum] timestamp the timestamp of the request in seconds since epoch
|
81
|
+
# @param [String] nonce the MAC header nonce
|
82
|
+
# @param [Symbol] verb the HTTP request method
|
83
|
+
# @param [String] url the HTTP URL path of the request
|
84
|
+
def signature(timestamp, nonce, verb, uri)
|
85
|
+
signature = [
|
86
|
+
timestamp,
|
87
|
+
nonce,
|
88
|
+
verb.to_s.upcase,
|
89
|
+
uri.request_uri,
|
90
|
+
uri.host,
|
91
|
+
uri.port,
|
92
|
+
'', nil
|
93
|
+
].join("\n")
|
94
|
+
|
95
|
+
strict_encode64(OpenSSL::HMAC.digest(@algorithm, secret, signature))
|
96
|
+
end
|
97
|
+
|
98
|
+
# Set the HMAC algorithm
|
99
|
+
#
|
100
|
+
# @param [String] alg the algorithm to use (one of 'hmac-sha-1', 'hmac-sha-256')
|
101
|
+
def algorithm=(alg)
|
102
|
+
@algorithm = case alg.to_s
|
103
|
+
when 'hmac-sha-1'
|
104
|
+
OpenSSL::Digest::SHA1.new
|
105
|
+
when 'hmac-sha-256'
|
106
|
+
OpenSSL::Digest::SHA256.new
|
107
|
+
else
|
108
|
+
fail(ArgumentError, 'Unsupported algorithm')
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
# No-op since we need the verb and path
|
115
|
+
# and the MAC always goes in a header
|
116
|
+
def token=(_)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Base64.strict_encode64 is not available on Ruby 1.8.7
|
120
|
+
def strict_encode64(str)
|
121
|
+
Base64.encode64(str).gsub("\n", '')
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
data/lib/oauth2/version.rb
CHANGED
data/oauth2.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.add_dependency 'rack', '~> 1.2'
|
12
12
|
spec.add_development_dependency 'bundler', '~> 1.0'
|
13
13
|
spec.authors = ['Michael Bleigh', 'Erik Michaels-Ober']
|
14
|
-
spec.description =
|
14
|
+
spec.description = 'A Ruby wrapper for the OAuth 2.0 protocol built with a similar style to the original OAuth spec.'
|
15
15
|
spec.email = ['michael@intridea.com', 'sferik@gmail.com']
|
16
16
|
spec.files = %w(.document CONTRIBUTING.md LICENSE.md README.md Rakefile oauth2.gemspec)
|
17
17
|
spec.files += Dir.glob('lib/**/*.rb')
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.name = 'oauth2'
|
22
22
|
spec.require_paths = %w(lib)
|
23
23
|
spec.required_rubygems_version = '>= 1.3.5'
|
24
|
-
spec.summary =
|
24
|
+
spec.summary = 'A Ruby wrapper for the OAuth 2.0 protocol.'
|
25
25
|
spec.test_files = Dir.glob('spec/**/*')
|
26
26
|
spec.version = OAuth2::Version
|
27
27
|
end
|
data/spec/helper.rb
CHANGED
@@ -8,13 +8,12 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
|
8
8
|
|
9
9
|
SimpleCov.start do
|
10
10
|
add_filter '/spec/'
|
11
|
-
minimum_coverage(95.
|
11
|
+
minimum_coverage(95.33)
|
12
12
|
end
|
13
13
|
|
14
14
|
require 'oauth2'
|
15
15
|
require 'addressable/uri'
|
16
16
|
require 'rspec'
|
17
|
-
require 'rspec/autorun'
|
18
17
|
|
19
18
|
RSpec.configure do |config|
|
20
19
|
config.expect_with :rspec do |c|
|
@@ -39,3 +38,5 @@ def capture_output(&block)
|
|
39
38
|
end
|
40
39
|
result
|
41
40
|
end
|
41
|
+
|
42
|
+
VERBS = [:get, :post, :put, :delete]
|
@@ -1,10 +1,7 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
VERBS = [:get, :post, :put, :delete]
|
4
|
-
|
5
3
|
describe AccessToken do
|
6
4
|
let(:token) { 'monkey' }
|
7
|
-
let(:token_body) { MultiJson.encode(:access_token => 'foo', :expires_in => 600, :refresh_token => 'bar') }
|
8
5
|
let(:refresh_body) { MultiJson.encode(:access_token => 'refreshed_foo', :expires_in => 600, :refresh_token => 'refresh_bar') }
|
9
6
|
let(:client) do
|
10
7
|
Client.new('abc', 'def', :site => 'https://api.example.com') do |builder|
|
data/spec/oauth2/client_spec.rb
CHANGED
@@ -120,8 +120,8 @@ describe OAuth2::Client do
|
|
120
120
|
end
|
121
121
|
|
122
122
|
it 'outputs to $stdout when OAUTH_DEBUG=true' do
|
123
|
-
ENV.
|
124
|
-
ENV.
|
123
|
+
allow(ENV).to receive(:[]).with('http_proxy').and_return(nil)
|
124
|
+
allow(ENV).to receive(:[]).with('OAUTH_DEBUG').and_return('true')
|
125
125
|
output = capture_output do
|
126
126
|
subject.request(:get, '/success')
|
127
127
|
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe MACToken do
|
4
|
+
let(:token) { 'monkey' }
|
5
|
+
let(:client) do
|
6
|
+
Client.new('abc', 'def', :site => 'https://api.example.com') do |builder|
|
7
|
+
builder.request :url_encoded
|
8
|
+
builder.adapter :test do |stub|
|
9
|
+
VERBS.each do |verb|
|
10
|
+
stub.send(verb, '/token/header') { |env| [200, {}, env[:request_headers]['Authorization']] }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
subject { MACToken.new(client, token, 'abc123') }
|
17
|
+
|
18
|
+
describe '#initialize' do
|
19
|
+
it 'assigns client and token' do
|
20
|
+
expect(subject.client).to eq(client)
|
21
|
+
expect(subject.token).to eq(token)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'assigns secret' do
|
25
|
+
expect(subject.secret).to eq('abc123')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'defaults algorithm to hmac-sha-256' do
|
29
|
+
expect(subject.algorithm).to be_instance_of(OpenSSL::Digest::SHA256)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'handles hmac-sha-256' do
|
33
|
+
mac = MACToken.new(client, token, 'abc123', :algorithm => 'hmac-sha-256')
|
34
|
+
expect(mac.algorithm).to be_instance_of(OpenSSL::Digest::SHA256)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'handles hmac-sha-1' do
|
38
|
+
mac = MACToken.new(client, token, 'abc123', :algorithm => 'hmac-sha-1')
|
39
|
+
expect(mac.algorithm).to be_instance_of(OpenSSL::Digest::SHA1)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'raises on improper algorithm' do
|
43
|
+
expect { MACToken.new(client, token, 'abc123', :algorithm => 'invalid-sha') }.to raise_error(ArgumentError)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#request' do
|
48
|
+
VERBS.each do |verb|
|
49
|
+
it "sends the token in the Authorization header for a #{verb.to_s.upcase} request" do
|
50
|
+
expect(subject.post('/token/header').body).to include("MAC id=\"#{token}\"")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#header' do
|
56
|
+
it 'does not generate the same header twice' do
|
57
|
+
header = subject.header('get', 'https://www.example.com/hello')
|
58
|
+
duplicate_header = subject.header('get', 'https://www.example.com/hello')
|
59
|
+
|
60
|
+
expect(header).to_not eq(duplicate_header)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'generates the proper format' do
|
64
|
+
header = subject.header('get', 'https://www.example.com/hello?a=1')
|
65
|
+
expect(header).to match(/MAC id="#{token}", ts="[0-9]+", nonce="[^"]+", mac="[^"]+"/)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'passes ArgumentError with an invalid url' do
|
69
|
+
expect { subject.header('get', 'this-is-not-valid') }.to raise_error(ArgumentError)
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'passes URI::InvalidURIError through' do
|
73
|
+
expect { subject.header('get', nil) }.to raise_error(URI::InvalidURIError)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '#signature' do
|
78
|
+
it 'generates properly' do
|
79
|
+
signature = subject.signature(0, 'random-string', 'get', URI('https://www.google.com'))
|
80
|
+
expect(signature).to eq('rMDjVA3VJj3v1OmxM29QQljKia6msl5rjN83x3bZmi8=')
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#headers' do
|
85
|
+
it 'is an empty hash' do
|
86
|
+
expect(subject.headers).to eq({})
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe '.from_access_token' do
|
91
|
+
let(:access_token) do
|
92
|
+
AccessToken.new(
|
93
|
+
client, token,
|
94
|
+
:expires_at => 1,
|
95
|
+
:expires_in => 1,
|
96
|
+
:refresh_token => 'abc',
|
97
|
+
:random => 1
|
98
|
+
)
|
99
|
+
end
|
100
|
+
|
101
|
+
subject { MACToken.from_access_token(access_token, 'hello') }
|
102
|
+
|
103
|
+
it 'initializes client, token, and secret properly' do
|
104
|
+
expect(subject.client).to eq(client)
|
105
|
+
expect(subject.token).to eq(token)
|
106
|
+
expect(subject.secret).to eq('hello')
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'initializes configuration options' do
|
110
|
+
expect(subject.expires_at).to eq(1)
|
111
|
+
expect(subject.expires_in).to eq(1)
|
112
|
+
expect(subject.refresh_token).to eq('abc')
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'initializes params' do
|
116
|
+
expect(subject.params).to eq(:random => 1)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
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: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Bleigh
|
@@ -9,96 +9,96 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-07-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '0.8'
|
21
|
-
- - <
|
21
|
+
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: '0.10'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
|
-
- -
|
28
|
+
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '0.8'
|
31
|
-
- - <
|
31
|
+
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0.10'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: jwt
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.0'
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.0'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: multi_json
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.3'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.3'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: multi_xml
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.5'
|
69
69
|
type: :runtime
|
70
70
|
prerelease: false
|
71
71
|
version_requirements: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0.5'
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
77
|
name: rack
|
78
78
|
requirement: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.2'
|
83
83
|
type: :runtime
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '1.2'
|
90
90
|
- !ruby/object:Gem::Dependency
|
91
91
|
name: bundler
|
92
92
|
requirement: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.0'
|
97
97
|
type: :development
|
98
98
|
prerelease: false
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '1.0'
|
104
104
|
description: A Ruby wrapper for the OAuth 2.0 protocol built with a similar style
|
@@ -110,34 +110,36 @@ executables: []
|
|
110
110
|
extensions: []
|
111
111
|
extra_rdoc_files: []
|
112
112
|
files:
|
113
|
-
- .document
|
113
|
+
- ".document"
|
114
114
|
- CONTRIBUTING.md
|
115
115
|
- LICENSE.md
|
116
116
|
- README.md
|
117
117
|
- Rakefile
|
118
|
-
- oauth2.gemspec
|
119
118
|
- lib/oauth2.rb
|
120
119
|
- lib/oauth2/access_token.rb
|
121
120
|
- lib/oauth2/client.rb
|
122
121
|
- lib/oauth2/error.rb
|
122
|
+
- lib/oauth2/mac_token.rb
|
123
123
|
- lib/oauth2/response.rb
|
124
|
-
- lib/oauth2/version.rb
|
125
|
-
- lib/oauth2/strategy/implicit.rb
|
126
|
-
- lib/oauth2/strategy/password.rb
|
127
124
|
- lib/oauth2/strategy/assertion.rb
|
128
125
|
- lib/oauth2/strategy/auth_code.rb
|
129
126
|
- lib/oauth2/strategy/base.rb
|
130
127
|
- lib/oauth2/strategy/client_credentials.rb
|
128
|
+
- lib/oauth2/strategy/implicit.rb
|
129
|
+
- lib/oauth2/strategy/password.rb
|
130
|
+
- lib/oauth2/version.rb
|
131
|
+
- oauth2.gemspec
|
131
132
|
- spec/helper.rb
|
132
133
|
- spec/oauth2/access_token_spec.rb
|
133
134
|
- spec/oauth2/client_spec.rb
|
135
|
+
- spec/oauth2/mac_token_spec.rb
|
134
136
|
- spec/oauth2/response_spec.rb
|
135
|
-
- spec/oauth2/strategy/auth_code_spec.rb
|
136
|
-
- spec/oauth2/strategy/password_spec.rb
|
137
|
-
- spec/oauth2/strategy/implicit_spec.rb
|
138
|
-
- spec/oauth2/strategy/client_credentials_spec.rb
|
139
137
|
- spec/oauth2/strategy/assertion_spec.rb
|
138
|
+
- spec/oauth2/strategy/auth_code_spec.rb
|
140
139
|
- spec/oauth2/strategy/base_spec.rb
|
140
|
+
- spec/oauth2/strategy/client_credentials_spec.rb
|
141
|
+
- spec/oauth2/strategy/implicit_spec.rb
|
142
|
+
- spec/oauth2/strategy/password_spec.rb
|
141
143
|
homepage: http://github.com/intridea/oauth2
|
142
144
|
licenses:
|
143
145
|
- MIT
|
@@ -148,17 +150,17 @@ require_paths:
|
|
148
150
|
- lib
|
149
151
|
required_ruby_version: !ruby/object:Gem::Requirement
|
150
152
|
requirements:
|
151
|
-
- -
|
153
|
+
- - ">="
|
152
154
|
- !ruby/object:Gem::Version
|
153
155
|
version: '0'
|
154
156
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
157
|
requirements:
|
156
|
-
- -
|
158
|
+
- - ">="
|
157
159
|
- !ruby/object:Gem::Version
|
158
160
|
version: 1.3.5
|
159
161
|
requirements: []
|
160
162
|
rubyforge_project:
|
161
|
-
rubygems_version: 2.
|
163
|
+
rubygems_version: 2.2.2
|
162
164
|
signing_key:
|
163
165
|
specification_version: 4
|
164
166
|
summary: A Ruby wrapper for the OAuth 2.0 protocol.
|
@@ -166,11 +168,12 @@ test_files:
|
|
166
168
|
- spec/helper.rb
|
167
169
|
- spec/oauth2/access_token_spec.rb
|
168
170
|
- spec/oauth2/client_spec.rb
|
171
|
+
- spec/oauth2/mac_token_spec.rb
|
169
172
|
- spec/oauth2/response_spec.rb
|
170
|
-
- spec/oauth2/strategy/auth_code_spec.rb
|
171
|
-
- spec/oauth2/strategy/password_spec.rb
|
172
|
-
- spec/oauth2/strategy/implicit_spec.rb
|
173
|
-
- spec/oauth2/strategy/client_credentials_spec.rb
|
174
173
|
- spec/oauth2/strategy/assertion_spec.rb
|
174
|
+
- spec/oauth2/strategy/auth_code_spec.rb
|
175
175
|
- spec/oauth2/strategy/base_spec.rb
|
176
|
+
- spec/oauth2/strategy/client_credentials_spec.rb
|
177
|
+
- spec/oauth2/strategy/implicit_spec.rb
|
178
|
+
- spec/oauth2/strategy/password_spec.rb
|
176
179
|
has_rdoc:
|