oa-oauth 0.1.6 → 0.2.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -1
- data/lib/omniauth/oauth.rb +1 -0
- data/lib/omniauth/strategies/dopplr.rb +37 -7
- data/lib/omniauth/strategies/facebook.rb +7 -6
- data/lib/omniauth/strategies/foursquare.rb +16 -3
- data/lib/omniauth/strategies/github.rb +10 -7
- data/lib/omniauth/strategies/gowalla.rb +8 -5
- data/lib/omniauth/strategies/identica.rb +4 -4
- data/lib/omniauth/strategies/linked_in.rb +7 -5
- data/lib/omniauth/strategies/meetup.rb +3 -3
- data/lib/omniauth/strategies/oauth.rb +23 -6
- data/lib/omniauth/strategies/oauth2.rb +10 -5
- data/lib/omniauth/strategies/smug_mug.rb +42 -0
- data/lib/omniauth/strategies/sound_cloud.rb +2 -2
- data/lib/omniauth/strategies/thirty_seven_signals.rb +8 -5
- data/lib/omniauth/strategies/trip_it.rb +3 -3
- data/lib/omniauth/strategies/twitter.rb +14 -5
- metadata +19 -14
data/README.rdoc
CHANGED
data/lib/omniauth/oauth.rb
CHANGED
@@ -10,13 +10,43 @@ module OmniAuth
|
|
10
10
|
# use OmniAuth::Strategies::Dopplr, 'consumerkey', 'consumersecret'
|
11
11
|
#
|
12
12
|
class Dopplr < OmniAuth::Strategies::OAuth
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
# Initialize the Dopplr strategy.
|
14
|
+
#
|
15
|
+
# @option options [Hash, {}] :client_options Options to be passed directly to the OAuth Consumer
|
16
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
17
|
+
client_options = {
|
18
|
+
:site => 'https://www.dopplr.com',
|
19
|
+
:request_token_path => "/oauth/request_token",
|
20
|
+
:access_token_path => "/oauth/access_token",
|
21
|
+
:authorize_path => "/oauth/authorize"
|
22
|
+
}
|
23
|
+
|
24
|
+
super(app, :dopplr, consumer_key, consumer_secret, client_options, options, &block)
|
25
|
+
end
|
26
|
+
|
27
|
+
def user_data
|
28
|
+
@data ||= MultiJson.decode(@access_token.get('/oauthapi/whoami').body)['whoami']
|
29
|
+
end
|
30
|
+
|
31
|
+
def user_info
|
32
|
+
{
|
33
|
+
'nickname' => user_data["nick"],
|
34
|
+
'first_name' => user_data["forename"],
|
35
|
+
'last_name' => user_data["surname"],
|
36
|
+
'name' => "#{user_data['forename']} #{user_data['surname']}",
|
37
|
+
'urls' => {
|
38
|
+
'Dopplr' => user_data["dopplr_url"],
|
39
|
+
'DopplrMobile' => user_data["mobile_url"],
|
40
|
+
}
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
def auth_hash
|
45
|
+
OmniAuth::Utils.deep_merge(super, {
|
46
|
+
'uid' => user_data['nick'],
|
47
|
+
'user_info' => user_info
|
48
|
+
})
|
49
|
+
end
|
20
50
|
end
|
21
51
|
end
|
22
52
|
end
|
@@ -7,15 +7,14 @@ module OmniAuth
|
|
7
7
|
# basic user information.
|
8
8
|
#
|
9
9
|
# @example Basic Usage
|
10
|
-
# use OmniAuth::Strategies::Facebook, '
|
10
|
+
# use OmniAuth::Strategies::Facebook, 'client_id', 'client_secret'
|
11
11
|
class Facebook < OAuth2
|
12
12
|
# @param [Rack Application] app standard middleware application parameter
|
13
|
-
# @param [String]
|
14
|
-
# @param [String]
|
13
|
+
# @param [String] client_id the application id as [registered on Facebook](http://www.facebook.com/developers/)
|
14
|
+
# @param [String] client_secret the application secret as registered on Facebook
|
15
15
|
# @option options [String] :scope ('email,offline_access') comma-separated extended permissions such as `email` and `manage_pages`
|
16
|
-
def initialize(app,
|
17
|
-
|
18
|
-
super(app, :facebook, app_id, app_secret, options)
|
16
|
+
def initialize(app, client_id = nil, client_secret = nil, options = {}, &block)
|
17
|
+
super(app, :facebook, client_id, client_secret, {:site => 'https://graph.facebook.com/'}, options, &block)
|
19
18
|
end
|
20
19
|
|
21
20
|
def user_data
|
@@ -30,9 +29,11 @@ module OmniAuth
|
|
30
29
|
def user_info
|
31
30
|
{
|
32
31
|
'nickname' => user_data["link"].split('/').last,
|
32
|
+
'email' => (user_data["email"] if user_data["email"]),
|
33
33
|
'first_name' => user_data["first_name"],
|
34
34
|
'last_name' => user_data["last_name"],
|
35
35
|
'name' => "#{user_data['first_name']} #{user_data['last_name']}",
|
36
|
+
'image' => "http://graph.facebook.com/#{user_data['id']}/picture?type=square",
|
36
37
|
'urls' => {
|
37
38
|
'Facebook' => user_data["link"],
|
38
39
|
'Website' => user_data["website"],
|
@@ -1,9 +1,22 @@
|
|
1
|
+
require 'omniauth/oauth'
|
2
|
+
require 'multi_json'
|
3
|
+
|
1
4
|
module OmniAuth
|
2
5
|
module Strategies
|
3
6
|
class Foursquare < OAuth
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
+
# Initialize the middleware
|
8
|
+
#
|
9
|
+
# @option options [Boolean, true] :sign_in When true, use a sign-in flow instead of the authorization flow.
|
10
|
+
# @option options [Boolean, false] :mobile When true, use the mobile sign-in interface.
|
11
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
12
|
+
client_options = {:site => 'http://foursquare.com'}
|
13
|
+
|
14
|
+
auth_path = (options[:sign_in] == false) ? '/oauth/authorize' : '/oauth/authenticate'
|
15
|
+
auth_path = "/mobile#{auth_path}" if options[:mobile]
|
16
|
+
|
17
|
+
client_options[:authorize_path] = auth_path
|
18
|
+
|
19
|
+
super(app, :foursquare, consumer_key, consumer_secret, client_options, options, &block)
|
7
20
|
end
|
8
21
|
|
9
22
|
def auth_hash
|
@@ -8,13 +8,16 @@ module OmniAuth
|
|
8
8
|
# and provide the proper credentials to this middleware.
|
9
9
|
class GitHub < OAuth2
|
10
10
|
# @param [Rack Application] app standard middleware application argument
|
11
|
-
# @param [String]
|
12
|
-
# @param [String]
|
13
|
-
def initialize(app,
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
# @param [String] client_id the application ID for your client
|
12
|
+
# @param [String] client_secret the application secret
|
13
|
+
def initialize(app, client_id = nil, client_secret = nil, options = {}, &block)
|
14
|
+
client_options = {
|
15
|
+
:site => 'https://github.com/',
|
16
|
+
:authorize_path => '/login/oauth/authorize',
|
17
|
+
:access_token_path => '/login/oauth/access_token'
|
18
|
+
}
|
19
|
+
|
20
|
+
super(app, :github, client_id, client_secret, client_options, options, &block)
|
18
21
|
end
|
19
22
|
|
20
23
|
protected
|
@@ -14,11 +14,14 @@ module OmniAuth
|
|
14
14
|
# @param [String] api_key the application id as [registered on Gowalla](http://gowalla.com/api/keys)
|
15
15
|
# @param [String] secret_key the application secret as [registered on Gowalla](http://gowalla.com/api/keys)
|
16
16
|
# @option options ['read','read-write'] :scope ('read') the scope of your authorization request; must be `read` or `read-write`
|
17
|
-
def initialize(app, api_key, secret_key, options = {})
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
def initialize(app, api_key = nil, secret_key = nil, options = {}, &block)
|
18
|
+
client_options = {
|
19
|
+
:site => 'https://api.gowalla.com/api/oauth',
|
20
|
+
:authorize_url => 'https://gowalla.com/api/oauth/new',
|
21
|
+
:access_token_url => 'https://api.gowalla.com/api/oauth/token'
|
22
|
+
}
|
23
|
+
|
24
|
+
super(app, :gowalla, api_key, secret_key, client_options, options, &block)
|
22
25
|
end
|
23
26
|
|
24
27
|
protected
|
@@ -12,17 +12,17 @@ module OmniAuth
|
|
12
12
|
# use OmniAuth::Strategies::Identica, 'consumerkey', 'consumersecret'
|
13
13
|
#
|
14
14
|
class Identica < OmniAuth::Strategies::OAuth
|
15
|
-
def initialize(app, consumer_key, consumer_secret)
|
15
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
16
16
|
super(app, :identica, consumer_key, consumer_secret,
|
17
|
-
:site => 'http://identi.ca',
|
17
|
+
{:site => 'http://identi.ca',
|
18
18
|
:request_token_path => "/api/oauth/request_token",
|
19
19
|
:access_token_path => "/api/oauth/access_token",
|
20
|
-
:authorize_path => "/api/oauth/authorize")
|
20
|
+
:authorize_path => "/api/oauth/authorize"}, options, &block)
|
21
21
|
end
|
22
22
|
|
23
23
|
def auth_hash
|
24
24
|
OmniAuth::Utils.deep_merge(super, {
|
25
|
-
'uid' =>
|
25
|
+
'uid' => user_hash['id'],
|
26
26
|
'user_info' => user_info,
|
27
27
|
'extra' => {'user_hash' => user_hash}
|
28
28
|
})
|
@@ -4,13 +4,13 @@ require 'omniauth/oauth'
|
|
4
4
|
module OmniAuth
|
5
5
|
module Strategies
|
6
6
|
class LinkedIn < OmniAuth::Strategies::OAuth
|
7
|
-
def initialize(app, consumer_key, consumer_secret)
|
7
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
8
8
|
super(app, :linked_in, consumer_key, consumer_secret,
|
9
|
-
:site => 'https://api.linkedin.com',
|
9
|
+
{:site => 'https://api.linkedin.com',
|
10
10
|
:request_token_path => '/uas/oauth/requestToken',
|
11
11
|
:access_token_path => '/uas/oauth/accessToken',
|
12
12
|
:authorize_path => '/uas/oauth/authorize',
|
13
|
-
:scheme => :header)
|
13
|
+
:scheme => :header}, options, &block)
|
14
14
|
end
|
15
15
|
|
16
16
|
def auth_hash
|
@@ -23,7 +23,7 @@ module OmniAuth
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def user_hash(access_token)
|
26
|
-
person = Nokogiri::XML::Document.parse(@access_token.get('/v1/people/~:(id,first-name,last-name,headline,member-url-resources,picture-url,location)').body).xpath('person')
|
26
|
+
person = Nokogiri::XML::Document.parse(@access_token.get('/v1/people/~:(id,first-name,last-name,headline,member-url-resources,picture-url,location,public-profile-url)').body).xpath('person')
|
27
27
|
|
28
28
|
hash = {
|
29
29
|
'id' => person.xpath('id').text,
|
@@ -38,7 +38,9 @@ module OmniAuth
|
|
38
38
|
end
|
39
39
|
}
|
40
40
|
|
41
|
-
hash[
|
41
|
+
hash['urls']['LinkedIn'] = person.xpath('public-profile-url').text
|
42
|
+
hash['name'] = "#{hash['first_name']} #{hash['last_name']}"
|
43
|
+
|
42
44
|
hash
|
43
45
|
end
|
44
46
|
end
|
@@ -11,12 +11,12 @@ module OmniAuth
|
|
11
11
|
# use OmniAuth::Strategies::Meetup, 'consumerkey', 'consumersecret'
|
12
12
|
#
|
13
13
|
class Meetup < OmniAuth::Strategies::OAuth
|
14
|
-
def initialize(app, consumer_key, consumer_secret)
|
14
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
15
15
|
super(app, :meetup, consumer_key, consumer_secret,
|
16
16
|
# :site => 'https://api.meetup.com',
|
17
|
-
:request_token_path => "https://api.meetup.com/oauth/request",
|
17
|
+
{:request_token_path => "https://api.meetup.com/oauth/request",
|
18
18
|
:access_token_path => "https://api.meetup.com/oauth/access",
|
19
|
-
:authorize_path => "http://www.meetup.com/authorize/")
|
19
|
+
:authorize_path => "http://www.meetup.com/authorize/"}, options)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -6,23 +6,40 @@ module OmniAuth
|
|
6
6
|
class OAuth
|
7
7
|
include OmniAuth::Strategy
|
8
8
|
|
9
|
-
def initialize(app, name, consumer_key, consumer_secret, options = {})
|
9
|
+
def initialize(app, name, consumer_key = nil, consumer_secret = nil, consumer_options = {}, options = {}, &block)
|
10
|
+
self.consumer_key = consumer_key
|
11
|
+
self.consumer_secret = consumer_secret
|
12
|
+
self.consumer_options = consumer_options
|
10
13
|
super
|
11
|
-
@consumer = ::OAuth::Consumer.new(consumer_key, consumer_secret, options)
|
12
14
|
end
|
13
|
-
|
14
|
-
|
15
|
+
|
16
|
+
def consumer
|
17
|
+
::OAuth::Consumer.new(consumer_key, consumer_secret, consumer_options.merge(options[:client_options] || options[:consumer_options] || {}))
|
18
|
+
end
|
19
|
+
|
20
|
+
attr_reader :name
|
21
|
+
attr_accessor :consumer_key, :consumer_secret, :consumer_options
|
22
|
+
|
15
23
|
def request_phase
|
16
24
|
request_token = consumer.get_request_token(:oauth_callback => callback_url)
|
17
25
|
(session[:oauth]||={})[name.to_sym] = {:callback_confirmed => request_token.callback_confirmed?, :request_token => request_token.token, :request_secret => request_token.secret}
|
18
26
|
r = Rack::Response.new
|
19
|
-
|
27
|
+
|
28
|
+
if request_token.callback_confirmed?
|
29
|
+
r.redirect(request_token.authorize_url)
|
30
|
+
else
|
31
|
+
r.redirect(request_token.authorize_url(:oauth_callback => callback_url))
|
32
|
+
end
|
33
|
+
|
20
34
|
r.finish
|
21
35
|
end
|
22
36
|
|
23
37
|
def callback_phase
|
24
38
|
request_token = ::OAuth::RequestToken.new(consumer, session[:oauth][name.to_sym].delete(:request_token), session[:oauth][name.to_sym].delete(:request_secret))
|
25
|
-
|
39
|
+
|
40
|
+
opts = {}
|
41
|
+
opts[:oauth_callback] = callback_url if session[:oauth][:callback_confirmed]
|
42
|
+
@access_token = request_token.get_access_token(opts)
|
26
43
|
super
|
27
44
|
rescue ::OAuth::Unauthorized => e
|
28
45
|
fail!(:invalid_credentials, e)
|
@@ -16,7 +16,7 @@ module OmniAuth
|
|
16
16
|
# The options passed in to the strategy.
|
17
17
|
attr_accessor :options
|
18
18
|
# The `OAuth2::Client` for this strategy.
|
19
|
-
attr_accessor :
|
19
|
+
attr_accessor :client_id, :client_secret, :client_options
|
20
20
|
|
21
21
|
# An error that is indicated in the OAuth 2.0 callback.
|
22
22
|
# This could be a `redirect_uri_mismatch` or other
|
@@ -37,10 +37,15 @@ module OmniAuth
|
|
37
37
|
# @param [String] client_id the client/application ID of this provider
|
38
38
|
# @param [String] client_secret the client/application secret of this provider
|
39
39
|
# @param [Hash] options that will be passed through to the OAuth2::Client (see [oauth2 docs](http://rubydoc.info/gems/oauth2))
|
40
|
-
def initialize(app, name, client_id, client_secret, options = {})
|
41
|
-
|
42
|
-
self.
|
43
|
-
self.
|
40
|
+
def initialize(app, name, client_id = nil, client_secret = nil, client_options = {}, options = {}, &block)
|
41
|
+
self.client_id = client_id
|
42
|
+
self.client_secret = client_secret
|
43
|
+
self.client_options = client_options
|
44
|
+
super
|
45
|
+
end
|
46
|
+
|
47
|
+
def client
|
48
|
+
::OAuth2::Client.new(client_id, client_secret, client_options.merge(options[:client_options] || {}))
|
44
49
|
end
|
45
50
|
|
46
51
|
protected
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'omniauth/oauth'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
module OmniAuth
|
5
|
+
module Strategies
|
6
|
+
#
|
7
|
+
# Authenticate to SmugMug via OAuth and retrieve basic user information.
|
8
|
+
# Usage:
|
9
|
+
# use OmniAuth::Strategies::SmugMug, 'consumerkey', 'consumersecret'
|
10
|
+
#
|
11
|
+
class SmugMug < OmniAuth::Strategies::OAuth
|
12
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
13
|
+
super(app, :smugmug, consumer_key, consumer_secret,
|
14
|
+
{:site => 'http://api.smugmug.com',
|
15
|
+
:request_token_path => "/services/oauth/getRequestToken.mg",
|
16
|
+
:access_token_path => "/services/oauth/getAccessToken.mg",
|
17
|
+
:authorize_path => "/services/oauth/authorize.mg"}, options, &block)
|
18
|
+
end
|
19
|
+
|
20
|
+
def auth_hash
|
21
|
+
OmniAuth::Utils.deep_merge(super, {
|
22
|
+
'uid' => user_hash['id'],
|
23
|
+
'user_info' => user_info,
|
24
|
+
'extra' => { 'user_hash' => user_hash }
|
25
|
+
})
|
26
|
+
end
|
27
|
+
|
28
|
+
# user info according to schema
|
29
|
+
def user_info
|
30
|
+
{
|
31
|
+
'nickname' => user_hash['NickName'],
|
32
|
+
'name' => user_hash['NickName']
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
# info as supplied by SmugMug
|
37
|
+
def user_hash
|
38
|
+
@user_hash ||= MultiJson.decode(@access_token.get('/services/api/json/1.2.2/?method=smugmug.auth.checkAccessToken').body)['Auth']['User']
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -13,8 +13,8 @@ module OmniAuth
|
|
13
13
|
#
|
14
14
|
|
15
15
|
class SoundCloud < OmniAuth::Strategies::OAuth
|
16
|
-
def initialize(app, consumer_key, consumer_secret)
|
17
|
-
super(app, :soundcloud, consumer_key, consumer_secret, :site => 'https://api.soundcloud.com')
|
16
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
17
|
+
super(app, :soundcloud, consumer_key, consumer_secret, {:site => 'https://api.soundcloud.com'}, options)
|
18
18
|
end
|
19
19
|
|
20
20
|
def auth_hash
|
@@ -4,11 +4,14 @@ require 'multi_json'
|
|
4
4
|
module OmniAuth
|
5
5
|
module Strategies
|
6
6
|
class ThirtySevenSignals < OAuth2
|
7
|
-
def initialize(app,
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
def initialize(app, client_id = nil, client_secret = nil, options = {}, &block)
|
8
|
+
client_options = {
|
9
|
+
:site => 'https://launchpad.37signals.com/',
|
10
|
+
:authorize_path => '/authorization/new',
|
11
|
+
:access_token_path => '/authorization/token'
|
12
|
+
}
|
13
|
+
|
14
|
+
super(app, :thirty_seven_signals, client_id, client_secret, client_options, options, &block)
|
12
15
|
end
|
13
16
|
|
14
17
|
def user_data
|
@@ -10,12 +10,12 @@ module OmniAuth
|
|
10
10
|
# use OmniAuth::Strategies::TripIt, 'consumerkey', 'consumersecret'
|
11
11
|
#
|
12
12
|
class TripIt < OmniAuth::Strategies::OAuth
|
13
|
-
def initialize(app, consumer_key, consumer_secret)
|
13
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
14
14
|
super(app, :tripit, consumer_key, consumer_secret,
|
15
|
-
:site => 'https://api.tripit.com',
|
15
|
+
{:site => 'https://api.tripit.com',
|
16
16
|
:request_token_path => "/oauth/request_token",
|
17
17
|
:access_token_path => "/oauth/access_token",
|
18
|
-
:authorize_url => "https://www.tripit.com/oauth/authorize")
|
18
|
+
:authorize_url => "https://www.tripit.com/oauth/authorize"}, options, &block)
|
19
19
|
end
|
20
20
|
|
21
21
|
def request_phase
|
@@ -12,10 +12,16 @@ module OmniAuth
|
|
12
12
|
# use OmniAuth::Strategies::Twitter, 'consumerkey', 'consumersecret'
|
13
13
|
#
|
14
14
|
class Twitter < OmniAuth::Strategies::OAuth
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
# Initialize the middleware
|
16
|
+
#
|
17
|
+
# @option options [Boolean, true] :sign_in When true, use the "Sign in with Twitter" flow instead of the authorization flow.
|
18
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
19
|
+
client_options = {
|
20
|
+
:site => 'https://api.twitter.com'
|
21
|
+
}
|
22
|
+
|
23
|
+
client_options[:authorize_path] = '/oauth/authenticate' unless options[:sign_in] == false
|
24
|
+
super(app, :twitter, consumer_key, consumer_secret, client_options, options)
|
19
25
|
end
|
20
26
|
|
21
27
|
def auth_hash
|
@@ -35,7 +41,10 @@ module OmniAuth
|
|
35
41
|
'location' => user_hash['location'],
|
36
42
|
'image' => user_hash['profile_image_url'],
|
37
43
|
'description' => user_hash['description'],
|
38
|
-
'urls' => {
|
44
|
+
'urls' => {
|
45
|
+
'Website' => user_hash['url'],
|
46
|
+
'Twitter' => 'http://twitter.com/' + user_hash['screen_name']
|
47
|
+
}
|
39
48
|
}
|
40
49
|
end
|
41
50
|
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oa-oauth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: -1848230051
|
5
|
+
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
- beta1
|
11
|
+
version: 0.2.0.beta1
|
11
12
|
platform: ruby
|
12
13
|
authors:
|
13
14
|
- Michael Bleigh
|
@@ -15,7 +16,7 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2010-
|
19
|
+
date: 2010-11-29 00:00:00 -06:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
@@ -24,12 +25,13 @@ dependencies:
|
|
24
25
|
requirements:
|
25
26
|
- - "="
|
26
27
|
- !ruby/object:Gem::Version
|
27
|
-
hash:
|
28
|
+
hash: -1848230051
|
28
29
|
segments:
|
29
30
|
- 0
|
30
|
-
-
|
31
|
-
-
|
32
|
-
|
31
|
+
- 2
|
32
|
+
- 0
|
33
|
+
- beta1
|
34
|
+
version: 0.2.0.beta1
|
33
35
|
requirement: *id001
|
34
36
|
name: oa-core
|
35
37
|
prerelease: false
|
@@ -212,6 +214,7 @@ files:
|
|
212
214
|
- lib/omniauth/strategies/meetup.rb
|
213
215
|
- lib/omniauth/strategies/oauth.rb
|
214
216
|
- lib/omniauth/strategies/oauth2.rb
|
217
|
+
- lib/omniauth/strategies/smug_mug.rb
|
215
218
|
- lib/omniauth/strategies/sound_cloud.rb
|
216
219
|
- lib/omniauth/strategies/thirty_seven_signals.rb
|
217
220
|
- lib/omniauth/strategies/trip_it.rb
|
@@ -240,12 +243,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
240
243
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
241
244
|
none: false
|
242
245
|
requirements:
|
243
|
-
- - "
|
246
|
+
- - ">"
|
244
247
|
- !ruby/object:Gem::Version
|
245
|
-
hash:
|
248
|
+
hash: 25
|
246
249
|
segments:
|
247
|
-
-
|
248
|
-
|
250
|
+
- 1
|
251
|
+
- 3
|
252
|
+
- 1
|
253
|
+
version: 1.3.1
|
249
254
|
requirements: []
|
250
255
|
|
251
256
|
rubyforge_project:
|