oauth-plugin 0.4.1 → 0.5.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e00863337c0f6f630e99c036361c7590f35e7035
4
+ data.tar.gz: 58fff0f6ec7e59f35615c9b395736adc9fe0eb81
5
+ SHA512:
6
+ metadata.gz: 85b490f713c4e5223b55b8c5e2b8e276103177b97b7f8aeae8887d0b73587083dcda787d1d0401717348ac7e0ba8f6eb55d55fc6bd8e04a528db926f72ee34a1
7
+ data.tar.gz: d43ead865825626ffdb3fd5e62edce078973b70b794ec61d72852b5aabdbc1573f83ca861c6058534ca4b1118193072da908e4181509d53f62680f32a7efa279
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ 0.5.0
2
+ - Make compatible with Rails 4 [tomhughes]
3
+ - Added support for RefreshTokens [RubenHoms]
4
+ - allow? should return false when token is not found [thetizzo]
5
+ - add license to gemspec [jordimassaguerpla]
6
+ - update documentation for Rails 2.x [yann]
1
7
  0.4.1
2
8
  - Security fix for OAuth1 provider. Please upgrade if you're using any 0.4 version. Thanks to [tomhughes]
3
9
  - Limit index size in ConsumerToken migration to deal with very large tokens [devainandor]
data/Gemfile CHANGED
@@ -6,21 +6,21 @@ gemspec
6
6
  require 'rbconfig'
7
7
 
8
8
  platforms :ruby do
9
- if Config::CONFIG['target_os'] =~ /darwin/i
9
+ if RbConfig::CONFIG['target_os'] =~ /darwin/i
10
10
  gem 'rb-fsevent'
11
11
  gem 'growl'
12
12
  end
13
- if Config::CONFIG['target_os'] =~ /linux/i
13
+ if RbConfig::CONFIG['target_os'] =~ /linux/i
14
14
  gem 'rb-inotify', '>= 0.5.1'
15
15
  gem 'libnotify', '~> 0.1.3'
16
16
  end
17
17
  end
18
18
 
19
19
  platforms :jruby do
20
- if Config::CONFIG['target_os'] =~ /darwin/i
20
+ if RbConfig::CONFIG['target_os'] =~ /darwin/i
21
21
  gem 'growl'
22
22
  end
23
- if Config::CONFIG['target_os'] =~ /linux/i
23
+ if RbConfig::CONFIG['target_os'] =~ /linux/i
24
24
  gem 'rb-inotify', '>= 0.5.1'
25
25
  gem 'libnotify', '~> 0.1.3'
26
26
  end
data/README.rdoc CHANGED
@@ -166,6 +166,13 @@ This generates OAuth and OAuth client controllers as well as the required models
166
166
 
167
167
  It requires an authentication framework such as acts_as_authenticated, restful_authentication or restful_open_id_authentication. It also requires Rails 2.0.
168
168
 
169
+ === INSTALL RACK FILTER (NEW)
170
+
171
+ A big change over previous versions is that we now use a rack filter. You have to install this in your config/environment.rb file:
172
+
173
+ require 'oauth/rack/oauth_filter'
174
+ config.middleware.use OAuth::Rack::OAuthFilter
175
+
169
176
  === Generator Options
170
177
 
171
178
  By default the generator generates RSpec and ERB templates. The generator can instead create Test::Unit and/or HAML templates. To do this use the following options:
@@ -357,6 +364,10 @@ If you have an action you only want used via oauth:
357
364
 
358
365
  before_filter :oauth_required
359
366
 
367
+ You can also use this method in your controller:
368
+
369
+ oauthenticate :strategies => :token , :interactive => false
370
+
360
371
  All of these places the tokens user in current_user as you would expect. It also exposes the following methods:
361
372
 
362
373
  * current_token - for accessing the token used to authorize the current request
@@ -5,6 +5,9 @@ class CreateOauthConsumerTokens < ActiveRecord::Migration
5
5
  t.integer :user_id
6
6
  t.string :type, :limit => 30
7
7
  t.string :token, :limit => 1024 # This has to be huge because of Yahoo's excessively large tokens
8
+ t.string :refresh_token
9
+ t.string :expires_in
10
+ t.string :expires_at
8
11
  t.string :secret
9
12
  t.timestamps
10
13
  end
data/lib/oauth-plugin.rb CHANGED
@@ -3,7 +3,7 @@ require 'oauth/signature/hmac/sha1'
3
3
  require 'oauth/request_proxy/rack_request'
4
4
  require 'oauth/server'
5
5
  require 'oauth/controllers/application_controller_methods'
6
- if Rails.version =~ /^3\./
6
+ if Rails::VERSION::MAJOR >= 3
7
7
  require 'oauth/request_proxy/rack_request'
8
8
  else
9
9
  require 'oauth/request_proxy/action_controller_request'
@@ -11,7 +11,7 @@ else
11
11
  end
12
12
 
13
13
 
14
- if Rails.version =~ /^3\./
14
+ if Rails::VERSION::MAJOR >= 3
15
15
  module OAuth
16
16
  module Plugin
17
17
  class OAuthRailtie < Rails::Railtie
@@ -1,5 +1,5 @@
1
1
  module Oauth
2
2
  module Plugin
3
- VERSION = "0.4.1"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
@@ -28,7 +28,7 @@ module OAuth
28
28
  @strategies << :interactive if @options[:interactive]
29
29
  end
30
30
 
31
- def filter(controller)
31
+ def before(controller)
32
32
  Authenticator.new(controller,@strategies).allow?
33
33
  end
34
34
  end
@@ -44,8 +44,12 @@ module OAuth
44
44
  if @strategies.include?(:interactive) && interactive
45
45
  true
46
46
  elsif !(@strategies & env["oauth.strategies"].to_a).empty?
47
- @controller.send :current_user=, token.user if token
48
- true
47
+ if token.present?
48
+ @controller.send :current_user=, token.user
49
+ true
50
+ else
51
+ false
52
+ end
49
53
  else
50
54
  if @strategies.include?(:interactive)
51
55
  controller.send :access_denied
@@ -133,4 +137,4 @@ module OAuth
133
137
 
134
138
  end
135
139
  end
136
- end
140
+ end
@@ -25,7 +25,7 @@ module Oauth
25
25
 
26
26
  unless @token
27
27
  if @consumer.ancestors.include?(Oauth2Token)
28
- request_url = callback2_oauth_consumer_url(params[:id]) + callback2_querystring
28
+ request_url = callback2_oauth_consumer_url + callback2_querystring
29
29
  redirect_to @consumer.authorize_url(request_url)
30
30
  else
31
31
  request_url = callback_oauth_consumer_url(params[:id]) + callback2_querystring
@@ -45,8 +45,7 @@ module Oauth
45
45
  end
46
46
 
47
47
  def callback2
48
- @token = @consumer.access_token(current_user,params[:code], callback2_oauth_consumer_url(params[:id]))
49
- logger.info @token.inspect
48
+ @token = @consumer.access_token(current_user,params[:code], callback2_oauth_consumer_url)
50
49
  if @token
51
50
  # Log user in
52
51
  if logged_in?
@@ -118,6 +117,10 @@ module Oauth
118
117
  end
119
118
  end
120
119
 
120
+ def callback2_oauth_consumer_url
121
+ @consumer.consumer.options[:redirect_uri]
122
+ end
123
+
121
124
  protected
122
125
 
123
126
  # Override this in your controller to decide where you want to redirect user to after callback is finished.
@@ -1,5 +1,6 @@
1
1
  require 'oauth2'
2
2
  class Oauth2Token < ConsumerToken
3
+ after_initialize :ensure_access, if: :expired_and_existing?
3
4
 
4
5
  def self.consumer
5
6
  @consumer||=create_consumer
@@ -21,7 +22,28 @@ class Oauth2Token < ConsumerToken
21
22
  end
22
23
 
23
24
  def client
24
- @client ||= OAuth2::AccessToken.new self.class.consumer, token
25
+ @client ||= OAuth2::AccessToken.new self.class.consumer, token, {refresh_token: refresh_token, expires_at: expires_at, expires_in: expires_in }
25
26
  end
26
27
 
28
+ # @return [Boolean] Is the access token expired and does the record exist in the datastore?
29
+ def expired_and_existing?
30
+ return true if !self.new_record? and Time.now.to_i >= self.expires_at.to_i
31
+ false
32
+ end
33
+
34
+ # Refreshes the access token to ensure access
35
+ def ensure_access
36
+ self.class.find_or_create_from_access_token user, self, client.refresh!
37
+ end
38
+
39
+ # Returns the expiration date (expires_in, expires_at)
40
+ #
41
+ # @return [String, String] Expires_in and expires_at, respectively
42
+ # @note It will return the default expiration time as defined in the OAuth 2.0 spec when no options are set
43
+ def expiration_date(token)
44
+ return token.expires_in, token.expires_at if !token.expires_in.nil? and !token.expires_at.nil?
45
+ return token.expires_in, (Time.now.to_i + token.expires_in.to_i) if token.expires_at.nil? and !token.expires_in.nil?
46
+ return (token.expires_at.to_i - Time.now.to_i), token.expires_at if token.expires_in.nil? and !token.expires_at.nil?
47
+ return "3600", (Time.now.to_i + 3600)
48
+ end
27
49
  end
@@ -38,21 +38,49 @@ module Oauth
38
38
  find_or_create_from_access_token user, access_token
39
39
  end
40
40
 
41
- def find_or_create_from_access_token(user,access_token)
42
- secret = access_token.respond_to?(:secret) ? access_token.secret : nil
43
- if user
44
- token = self.find_or_initialize_by_user_id_and_token(user.id, access_token.token)
41
+ # Finds, creates or updates a ConsumerToken by finding the token
42
+ # or taking it when it's given. It then updates the attributes and saves the changes/new record to a datastore.
43
+ # @param user [User] The user to which the access token should belong to
44
+ # @param access_token [AccessToken || Oauth2Token] Either a request token taken from the service or a ConsumerToken
45
+ # @param new_token [AccessToken] A new access token, used for refreshing the access token with OAuth 2.
46
+ #
47
+ # Usage example:
48
+ # find_or_create_from_access_token(current_user, access_token) <-- Find or create a new access token
49
+ # find_or_create_from_access-token(current_user, Oauth2Token.last, client.refresh!) <-- Edits existing record with new refreshed information
50
+ def find_or_create_from_access_token(user, access_token, new_token = nil)
51
+ if access_token.class.ancestors.include?(Oauth2Token)
52
+ token = access_token
45
53
  else
46
- token = self.find_or_initialize_by_token(access_token.token)
54
+ if user
55
+ token = self.find_or_initialize_by_user_id_and_token(user.id, access_token.token)
56
+ else
57
+ token = self.find_or_initialize_by_token(access_token.token)
58
+ end
47
59
  end
48
60
 
49
- # set or update the secret
50
- token.secret = secret
61
+ token = if new_token then set_details(new_token, access_token) else set_details(access_token, token) end
62
+
51
63
  token.save! if token.new_record? or token.changed?
52
64
 
53
65
  token
54
66
  end
55
67
 
68
+ # Set the details such as the secret, refresh token and expiration time to an instance of ConsumerToken
69
+ # @return [ConsumerToken] A ConsumerToken
70
+ def set_details(access_token, token)
71
+ secret = access_token.respond_to?(:secret) ? access_token.secret : nil
72
+ refresh_token = access_token.respond_to?(:refresh_token) ? access_token.refresh_token : nil
73
+ expires_in, expires_at = token.expiration_date(access_token) if token.class.ancestors.include?(Oauth2Token)
74
+
75
+ token.token = access_token.token
76
+ token.refresh_token = refresh_token
77
+ token.secret = secret
78
+ token.expires_at = expires_at
79
+ token.expires_in = expires_in
80
+
81
+ token
82
+ end
83
+
56
84
  def build_user_from_token
57
85
  end
58
86
 
@@ -24,7 +24,7 @@ module OAuth
24
24
  env["oauth_plugin"] = true
25
25
  strategies = []
26
26
  if token_string = oauth2_token(request)
27
- if token = Oauth2Token.first(:conditions => ['invalidated_at IS NULL AND authorized_at IS NOT NULL and token = ?', token_string])
27
+ if token = Oauth2Token.where('invalidated_at IS NULL and authorized_at IS NOT NULL and token = ?', token_string).first
28
28
  env["oauth.token"] = token
29
29
  env["oauth.version"] = 2
30
30
  strategies << :oauth20_token
@@ -32,22 +32,26 @@ module OAuth
32
32
  end
33
33
 
34
34
  elsif oauth1_verify(request) do |request_proxy|
35
- client_application = ClientApplication.find_by_key(request_proxy.consumer_key)
36
- env["oauth.client_application_candidate"] = client_application
35
+ client_application = ClientApplication.find_by_key(request_proxy.consumer_key)
36
+ env["oauth.client_application_candidate"] = client_application
37
37
 
38
+ oauth_token = nil
39
+
40
+ if client_application
38
41
  # Store this temporarily in client_application object for use in request token generation
39
42
  client_application.token_callback_url = request_proxy.oauth_callback if request_proxy.oauth_callback
40
- oauth_token = nil
41
43
 
42
44
  if request_proxy.token
43
- oauth_token = client_application.tokens.first(:conditions => ['invalidated_at IS NULL AND authorized_at IS NOT NULL and token = ?', request_proxy.token])
45
+ oauth_token = client_application.tokens.where('invalidated_at IS NULL AND authorized_at IS NOT NULL and token = ?', request_proxy.token).first
44
46
  if oauth_token.respond_to?(:provided_oauth_verifier=)
45
47
  oauth_token.provided_oauth_verifier = request_proxy.oauth_verifier
46
48
  end
47
49
  env["oauth.token_candidate"] = oauth_token
48
50
  end
49
- # return the token secret and the consumer secret
50
- [(oauth_token.nil? ? nil : oauth_token.secret), (client_application.nil? ? nil : client_application.secret)]
51
+ end
52
+
53
+ # return the token secret and the consumer secret
54
+ [(oauth_token.nil? ? nil : oauth_token.secret), (client_application.nil? ? nil : client_application.secret)]
51
55
  end
52
56
  if env["oauth.token_candidate"]
53
57
  env["oauth.token"] = env["oauth.token_candidate"]
@@ -84,9 +88,9 @@ module OAuth
84
88
 
85
89
  def oauth2_token(request)
86
90
  request.params['bearer_token'] || request.params['access_token'] || (request.params["oauth_token"] && !request.params["oauth_signature"] ? request.params["oauth_token"] : nil ) ||
87
- request.env["HTTP_AUTHORIZATION"] &&
88
- !request.env["HTTP_AUTHORIZATION"][/(oauth_version="1.0")/] &&
89
- request.env["HTTP_AUTHORIZATION"][/^(Bearer|OAuth|Token) (token=)?([^\s]*)$/, 3]
91
+ request.env["HTTP_AUTHORIZATION"] &&
92
+ !request.env["HTTP_AUTHORIZATION"][/(oauth_version="1.0")/] &&
93
+ request.env["HTTP_AUTHORIZATION"][/^(Bearer|OAuth|Token) (token=)?([^\s]*)$/, 3]
90
94
  end
91
95
  end
92
96
  end
data/oauth-plugin.gemspec CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.authors = ["Pelle Braendgaard"]
11
11
  s.date = %q{2011-10-20}
12
12
  s.description = %q{Rails plugin for implementing an OAuth Provider or Consumer}
13
+ s.license = "MIT"
13
14
  s.email = %q{oauth-ruby@googlegroups.com}
14
15
  s.extra_rdoc_files = [
15
16
  "README.rdoc"
@@ -20,14 +20,14 @@ class ClientApplication
20
20
  end
21
21
 
22
22
  class OauthToken
23
- attr_accessor :token
23
+ attr_accessor :token, :refresh_token
24
24
 
25
- def self.first(conditions_hash)
26
- case conditions_hash[:conditions].last
25
+ def self.where(q, p)
26
+ case p
27
27
  when "not_authorized", "invalidated"
28
- nil
28
+ []
29
29
  else
30
- OauthToken.new(conditions_hash[:conditions].last)
30
+ [OauthToken.new(p)]
31
31
  end
32
32
  end
33
33
 
@@ -42,7 +42,7 @@ describe OAuth::Rack::OAuthFilter do
42
42
  it "should sign with oauth 1 access token" do
43
43
  client_application = ClientApplication.new "my_consumer"
44
44
  ClientApplication.stub!(:find_by_key).and_return(client_application)
45
- client_application.tokens.stub!(:first).and_return(AccessToken.new("my_token"))
45
+ client_application.tokens.stub!(:where).and_return([AccessToken.new("my_token")])
46
46
  get '/',{},{"HTTP_AUTHORIZATION"=>'OAuth oauth_consumer_key="my_consumer", oauth_nonce="oiFHXoN0172eigBBUfgaZLdQg7ycGekv8iTdfkCStY", oauth_signature="y35B2DqTWaNlzNX0p4wv%2FJAGzg8%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1295040394", oauth_token="my_token", oauth_version="1.0"'}
47
47
  last_response.should be_ok
48
48
  response = MultiJson.decode(last_response.body)
@@ -52,7 +52,7 @@ describe OAuth::Rack::OAuthFilter do
52
52
  it "should sign with oauth 1 request token" do
53
53
  client_application = ClientApplication.new "my_consumer"
54
54
  ClientApplication.stub!(:find_by_key).and_return(client_application)
55
- client_application.tokens.stub!(:first).and_return(RequestToken.new("my_token"))
55
+ client_application.tokens.stub!(:where).and_return([RequestToken.new("my_token")])
56
56
  get '/',{},{"HTTP_AUTHORIZATION"=>'OAuth oauth_consumer_key="my_consumer", oauth_nonce="oiFHXoN0172eigBBUfgaZLdQg7ycGekv8iTdfkCStY", oauth_signature="y35B2DqTWaNlzNX0p4wv%2FJAGzg8%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1295040394", oauth_token="my_token", oauth_version="1.0"'}
57
57
  last_response.should be_ok
58
58
  response = MultiJson.decode(last_response.body)
@@ -71,7 +71,7 @@ describe OAuth::Rack::OAuthFilter do
71
71
  it "should sign with oauth 1 access token" do
72
72
  client_application = ClientApplication.new "my_consumer"
73
73
  ClientApplication.stub!(:find_by_key).and_return(client_application)
74
- client_application.tokens.stub!(:first).and_return(AccessToken.new("my_token"))
74
+ client_application.tokens.stub!(:where).and_return([AccessToken.new("my_token")])
75
75
  get '/',{},{"HTTP_AUTHORIZATION"=>'OAuth oauth_consumer_key="my_consumer",oauth_nonce="oiFHXoN0172eigBBUfgaZLdQg7ycGekv8iTdfkCStY",oauth_signature="y35B2DqTWaNlzNX0p4wv%2FJAGzg8%3D",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1295040394",oauth_token="my_token",oauth_version="1.0"'}
76
76
  last_response.should be_ok
77
77
  response = MultiJson.decode(last_response.body)
@@ -81,7 +81,7 @@ describe OAuth::Rack::OAuthFilter do
81
81
  it "should sign with oauth 1 request token" do
82
82
  client_application = ClientApplication.new "my_consumer"
83
83
  ClientApplication.stub!(:find_by_key).and_return(client_application)
84
- client_application.tokens.stub!(:first).and_return(RequestToken.new("my_token"))
84
+ client_application.tokens.stub!(:where).and_return([RequestToken.new("my_token")])
85
85
  get '/',{},{"HTTP_AUTHORIZATION"=>'OAuth oauth_consumer_key="my_consumer",oauth_nonce="oiFHXoN0172eigBBUfgaZLdQg7ycGekv8iTdfkCStY",oauth_signature="y35B2DqTWaNlzNX0p4wv%2FJAGzg8%3D",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1295040394",oauth_token="my_token",oauth_version="1.0"'}
86
86
  last_response.should be_ok
87
87
  response = MultiJson.decode(last_response.body)
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth-plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
5
- prerelease:
4
+ version: 0.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Pelle Braendgaard
@@ -13,125 +12,158 @@ date: 2011-10-20 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: opentransact
16
- requirement: &70232006903220 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70232006903220
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: rspec
27
- requirement: &70232006901300 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ~>
31
32
  - !ruby/object:Gem::Version
32
33
  version: 2.4.0
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70232006901300
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 2.4.0
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: fakeweb
38
- requirement: &70232006899200 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *70232006899200
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: fuubar
49
- requirement: &70232006896860 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *70232006896860
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: guard-rspec
60
- requirement: &70232006896440 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ! '>='
73
+ - - '>='
64
74
  - !ruby/object:Gem::Version
65
75
  version: '0'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *70232006896440
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: growl
71
- requirement: &70232006895980 !ruby/object:Gem::Requirement
72
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
- - - ! '>='
87
+ - - '>='
75
88
  - !ruby/object:Gem::Version
76
89
  version: '0'
77
90
  type: :development
78
91
  prerelease: false
79
- version_requirements: *70232006895980
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
80
97
  - !ruby/object:Gem::Dependency
81
98
  name: rack-test
82
- requirement: &70232006895540 !ruby/object:Gem::Requirement
83
- none: false
99
+ requirement: !ruby/object:Gem::Requirement
84
100
  requirements:
85
- - - ! '>='
101
+ - - '>='
86
102
  - !ruby/object:Gem::Version
87
103
  version: '0'
88
104
  type: :development
89
105
  prerelease: false
90
- version_requirements: *70232006895540
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
91
111
  - !ruby/object:Gem::Dependency
92
112
  name: multi_json
93
- requirement: &70232006895080 !ruby/object:Gem::Requirement
94
- none: false
113
+ requirement: !ruby/object:Gem::Requirement
95
114
  requirements:
96
- - - ! '>='
115
+ - - '>='
97
116
  - !ruby/object:Gem::Version
98
117
  version: '0'
99
118
  type: :runtime
100
119
  prerelease: false
101
- version_requirements: *70232006895080
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
102
125
  - !ruby/object:Gem::Dependency
103
126
  name: oauth
104
- requirement: &70232006894540 !ruby/object:Gem::Requirement
105
- none: false
127
+ requirement: !ruby/object:Gem::Requirement
106
128
  requirements:
107
129
  - - ~>
108
130
  - !ruby/object:Gem::Version
109
131
  version: 0.4.4
110
132
  type: :runtime
111
133
  prerelease: false
112
- version_requirements: *70232006894540
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: 0.4.4
113
139
  - !ruby/object:Gem::Dependency
114
140
  name: rack
115
- requirement: &70232006894120 !ruby/object:Gem::Requirement
116
- none: false
141
+ requirement: !ruby/object:Gem::Requirement
117
142
  requirements:
118
- - - ! '>='
143
+ - - '>='
119
144
  - !ruby/object:Gem::Version
120
145
  version: '0'
121
146
  type: :runtime
122
147
  prerelease: false
123
- version_requirements: *70232006894120
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
124
153
  - !ruby/object:Gem::Dependency
125
154
  name: oauth2
126
- requirement: &70232006893580 !ruby/object:Gem::Requirement
127
- none: false
155
+ requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
- - - ! '>='
157
+ - - '>='
130
158
  - !ruby/object:Gem::Version
131
159
  version: 0.5.0
132
160
  type: :runtime
133
161
  prerelease: false
134
- version_requirements: *70232006893580
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: 0.5.0
135
167
  description: Rails plugin for implementing an OAuth Provider or Consumer
136
168
  email: oauth-ruby@googlegroups.com
137
169
  executables: []
@@ -305,28 +337,28 @@ files:
305
337
  - tasks/oauth_tasks.rake
306
338
  - uninstall.rb
307
339
  homepage: http://github.com/pelle/oauth-plugin
308
- licenses: []
340
+ licenses:
341
+ - MIT
342
+ metadata: {}
309
343
  post_install_message:
310
344
  rdoc_options: []
311
345
  require_paths:
312
346
  - lib
313
347
  required_ruby_version: !ruby/object:Gem::Requirement
314
- none: false
315
348
  requirements:
316
- - - ! '>='
349
+ - - '>='
317
350
  - !ruby/object:Gem::Version
318
351
  version: '0'
319
352
  required_rubygems_version: !ruby/object:Gem::Requirement
320
- none: false
321
353
  requirements:
322
- - - ! '>'
354
+ - - '>'
323
355
  - !ruby/object:Gem::Version
324
356
  version: 1.3.1
325
357
  requirements: []
326
358
  rubyforge_project: oauth
327
- rubygems_version: 1.8.11
359
+ rubygems_version: 2.0.0
328
360
  signing_key:
329
- specification_version: 3
361
+ specification_version: 4
330
362
  summary: Ruby on Rails Plugin for OAuth Provider and Consumer
331
363
  test_files:
332
364
  - spec/dummy_provider_models.rb