oa-oauth 0.2.5 → 0.2.6
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.
- data/Gemfile +7 -0
- data/lib/omniauth/oauth.rb +3 -0
- data/lib/omniauth/strategies/facebook.rb +1 -1
- data/lib/omniauth/strategies/google.rb +2 -2
- data/lib/omniauth/strategies/gowalla.rb +9 -1
- data/lib/omniauth/strategies/linked_in.rb +17 -16
- data/lib/omniauth/strategies/mailru.rb +107 -0
- data/lib/omniauth/strategies/oauth.rb +2 -4
- data/lib/omniauth/strategies/oauth2.rb +5 -12
- data/lib/omniauth/strategies/plurk.rb +58 -0
- data/lib/omniauth/strategies/taobao.rb +79 -0
- data/lib/omniauth/strategies/vkontakte.rb +7 -4
- data/lib/omniauth/version.rb +1 -1
- data/oa-oauth.gemspec +1 -2
- data/spec/omniauth/strategies/mailru_spec.rb +5 -0
- data/spec/omniauth/strategies/plurk_spec.rb +5 -0
- data/spec/omniauth/strategies/taobao_spec.rb +5 -0
- metadata +15 -6
data/Gemfile
ADDED
data/lib/omniauth/oauth.rb
CHANGED
@@ -28,12 +28,14 @@ module OmniAuth
|
|
28
28
|
autoload :Mixi, 'omniauth/strategies/mixi'
|
29
29
|
autoload :Netflix, 'omniauth/strategies/netflix'
|
30
30
|
autoload :Qzone, 'omniauth/strategies/qzone'
|
31
|
+
autoload :Plurk, 'omniauth/strategies/plurk'
|
31
32
|
autoload :Rdio, 'omniauth/strategies/rdio'
|
32
33
|
autoload :Renren, 'omniauth/strategies/renren'
|
33
34
|
autoload :Salesforce, 'omniauth/strategies/salesforce'
|
34
35
|
autoload :SmugMug, 'omniauth/strategies/smug_mug'
|
35
36
|
autoload :SoundCloud, 'omniauth/strategies/sound_cloud'
|
36
37
|
autoload :T163, 'omniauth/strategies/t163'
|
38
|
+
autoload :TB, 'omniauth/strategies/taobao'
|
37
39
|
autoload :Teambox, 'omniauth/strategies/teambox'
|
38
40
|
autoload :ThirtySevenSignals, 'omniauth/strategies/thirty_seven_signals'
|
39
41
|
autoload :Tqq, 'omniauth/strategies/tqq'
|
@@ -49,5 +51,6 @@ module OmniAuth
|
|
49
51
|
autoload :Yahoo, 'omniauth/strategies/yahoo'
|
50
52
|
autoload :Yammer, 'omniauth/strategies/yammer'
|
51
53
|
autoload :YouTube, 'omniauth/strategies/you_tube'
|
54
|
+
autoload :Mailru, 'omniauth/strategies/mailru'
|
52
55
|
end
|
53
56
|
end
|
@@ -45,7 +45,7 @@ module OmniAuth
|
|
45
45
|
|
46
46
|
def user_info
|
47
47
|
{
|
48
|
-
'nickname' => user_data["
|
48
|
+
'nickname' => user_data["username"],
|
49
49
|
'email' => (user_data["email"] if user_data["email"]),
|
50
50
|
'first_name' => user_data["first_name"],
|
51
51
|
'last_name' => user_data["last_name"],
|
@@ -20,9 +20,9 @@ module OmniAuth
|
|
20
20
|
:authorize_path => '/accounts/OAuthAuthorizeToken'
|
21
21
|
}
|
22
22
|
|
23
|
-
google_contacts_auth = "
|
23
|
+
google_contacts_auth = "www.google.com/m8/feeds"
|
24
24
|
options[:scope] ||= google_contacts_auth
|
25
|
-
options[:scope] << "
|
25
|
+
options[:scope] << " http://#{google_contacts_auth}" unless options[:scope] =~ %r[http[s]?:\/\/#{google_contacts_auth}]
|
26
26
|
|
27
27
|
super(app, :google, consumer_key, consumer_secret, client_options, options)
|
28
28
|
end
|
@@ -30,6 +30,14 @@ module OmniAuth
|
|
30
30
|
@data ||= MultiJson.decode(@access_token.get("/users/me.json"))
|
31
31
|
end
|
32
32
|
|
33
|
+
def refresh_token
|
34
|
+
@refresh_token ||= @access_token.refresh_token
|
35
|
+
end
|
36
|
+
|
37
|
+
def token_expires_at
|
38
|
+
@expires_at ||= @access_token.expires_at
|
39
|
+
end
|
40
|
+
|
33
41
|
def request_phase
|
34
42
|
options[:scope] ||= "read"
|
35
43
|
super
|
@@ -56,7 +64,7 @@ module OmniAuth
|
|
56
64
|
OmniAuth::Utils.deep_merge(super, {
|
57
65
|
'uid' => user_data["url"].split('/').last,
|
58
66
|
'user_info' => user_info,
|
59
|
-
'extra' => {'user_hash' => user_data}
|
67
|
+
'extra' => {'user_hash' => user_data, 'refresh_token' => refresh_token, 'token_expires_at' => token_expires_at}
|
60
68
|
})
|
61
69
|
end
|
62
70
|
end
|
@@ -28,26 +28,27 @@ module OmniAuth
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def user_hash(access_token)
|
31
|
-
|
31
|
+
person = MultiXml.parse(@access_token.get('/v1/people/~:(id,first-name,last-name,headline,member-url-resources,picture-url,location,public-profile-url)').body)['person']
|
32
32
|
|
33
33
|
hash = {
|
34
|
-
'id' => person
|
35
|
-
'first_name' => person
|
36
|
-
'last_name' => person
|
37
|
-
'nickname' => person
|
38
|
-
'location' => person
|
39
|
-
'image' => person
|
40
|
-
'description' => person
|
41
|
-
'public_profile_url' => person
|
42
|
-
'urls' => person.css('member-url-resources member-url').inject({}) do |h,element|
|
43
|
-
h[element.xpath('name').text] = element.xpath('url').text
|
44
|
-
h
|
45
|
-
end
|
34
|
+
'id' => person['id'],
|
35
|
+
'first_name' => person['first_name'],
|
36
|
+
'last_name' => person['last_name'],
|
37
|
+
'nickname' => person['public_profile_url'].split('/').last,
|
38
|
+
'location' => person['location']['name'],
|
39
|
+
'image' => person['picture_url'],
|
40
|
+
'description' => person['headline'],
|
41
|
+
'public_profile_url' => person['public_profile_url']
|
46
42
|
}
|
47
|
-
|
48
|
-
|
43
|
+
hash['urls']={}
|
44
|
+
member_urls = person['member_url_resources']['member_url']
|
45
|
+
if (!member_urls.nil?) and (!member_urls.empty?)
|
46
|
+
[member_urls].flatten.each do |url|
|
47
|
+
hash['urls']["#{url['name']}"]=url['url']
|
48
|
+
end
|
49
|
+
end
|
50
|
+
hash['urls']['LinkedIn'] = person['public_profile_url']
|
49
51
|
hash['name'] = "#{hash['first_name']} #{hash['last_name']}"
|
50
|
-
|
51
52
|
hash
|
52
53
|
end
|
53
54
|
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'omniauth/oauth'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
module OmniAuth
|
5
|
+
module Strategies
|
6
|
+
#
|
7
|
+
# Authenticate to Vkontakte utilizing OAuth 2.0 and retrieve
|
8
|
+
# basic user information.
|
9
|
+
# documentation available here:
|
10
|
+
# http://api.mail.ru/docs/guides/oauth/sites/
|
11
|
+
#
|
12
|
+
# @example Basic Usage
|
13
|
+
# use OmniAuth::Strategies::Mailru, 'API Key', 'Secret Key', :private_key => 'Private Key'
|
14
|
+
class Mailru < OAuth2
|
15
|
+
# @param [Rack Application] app standard middleware application parameter
|
16
|
+
# @param [String] api_key the application id as [registered in Mailru]
|
17
|
+
# @param [String] secret_key the application secret as [registered in Mailru]
|
18
|
+
def initialize(app, api_key = nil, secret_key = nil, options = {}, &block)
|
19
|
+
client_options = {
|
20
|
+
:site => 'https://connect.mail.ru',
|
21
|
+
:authorize_path => '/oauth/authorize',
|
22
|
+
:access_token_path => '/oauth/token'
|
23
|
+
}
|
24
|
+
|
25
|
+
@private_key = options[:private_key]
|
26
|
+
|
27
|
+
super(app, :mailru, api_key, secret_key, client_options, options, &block)
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
|
32
|
+
def request_phase
|
33
|
+
options[:response_type] ||= 'code'
|
34
|
+
super
|
35
|
+
end
|
36
|
+
|
37
|
+
def calculate_signature(params)
|
38
|
+
str = params['uids'] + (params.sort.collect { |c| "#{c[0]}=#{c[1]}" }).join('') + @private_key
|
39
|
+
Digest::MD5.hexdigest(str)
|
40
|
+
end
|
41
|
+
|
42
|
+
def user_data
|
43
|
+
request_params = {
|
44
|
+
'method' => 'users.getInfo',
|
45
|
+
'app_id' => client_id,
|
46
|
+
'session_key' => @access_token.token,
|
47
|
+
'uids' => @access_token['x_mailru_vid']
|
48
|
+
}
|
49
|
+
|
50
|
+
request_params.merge!('sig' => calculate_signature(request_params))
|
51
|
+
@data ||= MultiJson.decode(client.request(:get, 'http://www.appsmail.ru/platform/api', request_params))[0]
|
52
|
+
end
|
53
|
+
|
54
|
+
#"uid": "15410773191172635989",
|
55
|
+
#"first_name": "Евгений",
|
56
|
+
#"last_name": "Маслов",
|
57
|
+
#"nick": "maslov",
|
58
|
+
#"sex": 0,
|
59
|
+
#"birthday": "15.02.1980",
|
60
|
+
#"has_pic": 1,
|
61
|
+
#"pic": "http://avt.appsmail.ru/mail/emaslov/_avatar",
|
62
|
+
#"pic_small": "http://avt.appsmail.ru/mail/emaslov/_avatarsmall",
|
63
|
+
#"pic_big": "http://avt.appsmail.ru/mail/emaslov/_avatarbig",
|
64
|
+
#"link": "http://my.mail.ru/mail/emaslov/",
|
65
|
+
#"referer_type": "",
|
66
|
+
#"referer_id": "",
|
67
|
+
#"is_online": 1,
|
68
|
+
#"vip" : 1,
|
69
|
+
#"location": {
|
70
|
+
# "country": {
|
71
|
+
# "name": "Россия",
|
72
|
+
# "id": "24"
|
73
|
+
# },
|
74
|
+
# "city": {
|
75
|
+
# "name": "Москва",
|
76
|
+
# "id": "25"
|
77
|
+
# },
|
78
|
+
# "region": {
|
79
|
+
# "name": "Москва",
|
80
|
+
# "id": "999999"
|
81
|
+
# }
|
82
|
+
#}
|
83
|
+
|
84
|
+
def user_info
|
85
|
+
{
|
86
|
+
'nickname' => user_data['nick'],
|
87
|
+
'email' => user_data['email'],
|
88
|
+
'first_name' => user_data["first_name"],
|
89
|
+
'last_name' => user_data["last_name"],
|
90
|
+
'name' => "#{user_data['first_name']} #{user_data['last_name']}",
|
91
|
+
'image' => @data['pic'],
|
92
|
+
'urls' => {
|
93
|
+
'Mailru' => user_data["link"]
|
94
|
+
}
|
95
|
+
}
|
96
|
+
end
|
97
|
+
|
98
|
+
def auth_hash
|
99
|
+
OmniAuth::Utils.deep_merge(super, {
|
100
|
+
'uid' => user_data['uid'],
|
101
|
+
'user_info' => user_info,
|
102
|
+
'extra' => {'user_hash' => user_data}
|
103
|
+
})
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -31,15 +31,13 @@ module OmniAuth
|
|
31
31
|
request_token = consumer.get_request_token(:oauth_callback => callback_url)
|
32
32
|
session['oauth'] ||= {}
|
33
33
|
session['oauth'][name.to_s] = {'callback_confirmed' => request_token.callback_confirmed?, 'request_token' => request_token.token, 'request_secret' => request_token.secret}
|
34
|
-
r = Rack::Response.new
|
35
34
|
|
36
35
|
if request_token.callback_confirmed?
|
37
|
-
|
36
|
+
redirect request_token.authorize_url(options[:authorize_params])
|
38
37
|
else
|
39
|
-
|
38
|
+
redirect request_token.authorize_url(options[:authorize_params].merge(:oauth_callback => callback_url))
|
40
39
|
end
|
41
40
|
|
42
|
-
r.finish
|
43
41
|
rescue ::Timeout::Error => e
|
44
42
|
fail!(:timeout, e)
|
45
43
|
end
|
@@ -49,7 +49,7 @@ module OmniAuth
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def callback_url
|
52
|
-
full_host + callback_path
|
52
|
+
full_host + script_name + callback_path
|
53
53
|
end
|
54
54
|
|
55
55
|
protected
|
@@ -64,22 +64,15 @@ module OmniAuth
|
|
64
64
|
end
|
65
65
|
|
66
66
|
@access_token = build_access_token
|
67
|
-
|
68
|
-
if @access_token.expires? && @access_token.expires_in <= 0
|
69
|
-
client.request(:post, client.access_token_url, {
|
70
|
-
'client_id' => client_id,
|
71
|
-
'grant_type' => 'refresh_token',
|
72
|
-
'client_secret' => client_secret,
|
73
|
-
'refresh_token' => @access_token.refresh_token
|
74
|
-
}.merge(options))
|
75
|
-
@access_token = client.web_server.get_access_token(verifier, {:redirect_uri => callback_url}.merge(options))
|
76
|
-
end
|
67
|
+
@access_token = client.web_server.refresh_access_token(@access_token.refresh_token) if @access_token.expired?
|
77
68
|
|
78
69
|
super
|
79
70
|
rescue ::OAuth2::HTTPError, ::OAuth2::AccessDenied, CallbackError => e
|
80
71
|
fail!(:invalid_credentials, e)
|
81
72
|
rescue ::MultiJson::DecodeError => e
|
82
73
|
fail!(:invalid_response, e)
|
74
|
+
rescue ::Timeout::Error, ::Errno::ETIMEDOUT => e
|
75
|
+
fail!(:timeout, e)
|
83
76
|
end
|
84
77
|
|
85
78
|
def build_access_token
|
@@ -89,7 +82,7 @@ module OmniAuth
|
|
89
82
|
|
90
83
|
def auth_hash
|
91
84
|
credentials = {'token' => @access_token.token}
|
92
|
-
credentials.merge('refresh_token' => @access_token.refresh_token) if @access_token.expires?
|
85
|
+
credentials.merge!('refresh_token' => @access_token.refresh_token) if @access_token.expires?
|
93
86
|
|
94
87
|
OmniAuth::Utils.deep_merge(super, {'credentials' => credentials})
|
95
88
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'omniauth/oauth'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
module OmniAuth
|
5
|
+
module Strategies
|
6
|
+
#
|
7
|
+
# Authenticate to Plurk via OAuth and retrieve basic user info.
|
8
|
+
#
|
9
|
+
# Please note that this strategy relies on Plurk API 2.0,
|
10
|
+
# which is still in Beta.
|
11
|
+
#
|
12
|
+
# Usage:
|
13
|
+
# use OmniAuth::Strategies::Plurk
|
14
|
+
class Plurk < OmniAuth::Strategies::OAuth
|
15
|
+
|
16
|
+
# @param [Rack Application] app standard middleware application parameter
|
17
|
+
# @param [String] client_key App key [registered on plurk] (http://www.plurk.com/PlurkApp/register)
|
18
|
+
# @param [String] client_secret App secret registered on plurk
|
19
|
+
def initialize(app, client_key = nil, client_secret = nil, options = {}, &block)
|
20
|
+
client_options = { :site => 'http://www.plurk.com',
|
21
|
+
:request_token_path => '/OAuth/request_token',
|
22
|
+
:access_token_path => '/OAuth/access_token',
|
23
|
+
:authorize_path => '/OAuth/authorize' }
|
24
|
+
|
25
|
+
super(app, :plurk, client_key, client_secret, client_options, options)
|
26
|
+
end
|
27
|
+
|
28
|
+
def auth_hash
|
29
|
+
user = self.user_hash
|
30
|
+
OmniAuth::Utils.deep_merge(super, {
|
31
|
+
'uid' => user['id'],
|
32
|
+
'user_info' => user_info,
|
33
|
+
'extra' => {'user_hash' => user_hash}
|
34
|
+
})
|
35
|
+
end
|
36
|
+
|
37
|
+
def user_info
|
38
|
+
user = self.user_hash
|
39
|
+
{
|
40
|
+
'name' => user['full_name'],
|
41
|
+
'nickname' => user['display_name'] || user['nick_name'],
|
42
|
+
'location' => user['location'],
|
43
|
+
'image' => if user['has_profile_image'] == 1
|
44
|
+
"http://avatars.plurk.com/#{user['id']}-medium#{user['avatar']}.gif"
|
45
|
+
else
|
46
|
+
"http://www.plurk.com/static/default_medium.gif"
|
47
|
+
end,
|
48
|
+
'urls' => { 'Plurk' => 'http://plurk.com/' + user['nick_name']}
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
def user_hash
|
53
|
+
@user_hash ||= MultiJson.decode(@access_token.get('/APP/Profile/getOwnProfile').body)['user_info']
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'omniauth/oauth'
|
2
|
+
require 'multi_json'
|
3
|
+
require 'digest/md5'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
module OmniAuth
|
7
|
+
module Strategies
|
8
|
+
# Authenticate to Renren utilizing OAuth 2.0 and retrieve
|
9
|
+
# basic user information.
|
10
|
+
#
|
11
|
+
# @example Basic Usage
|
12
|
+
# use OmniAuth::Strategies::TB, 'client_id', 'client_secret'
|
13
|
+
class TB < OAuth2
|
14
|
+
# @param [Rack Application] app standard middleware application parameter
|
15
|
+
# @param [String] client_id the app key at taobao open platform
|
16
|
+
# @param [String] client_secret the app secret at taobao open platform
|
17
|
+
# @option options [String]
|
18
|
+
|
19
|
+
def initialize(app, client_id = nil, client_secret = nil, options = {}, &block)
|
20
|
+
client_options = {
|
21
|
+
:site => "https://oauth.taobao.com/",
|
22
|
+
:authorize_url => "/authorize",
|
23
|
+
:access_token_url => "/token"
|
24
|
+
}
|
25
|
+
|
26
|
+
super(app, :tb, client_id, client_secret, client_options, options, &block)
|
27
|
+
end
|
28
|
+
|
29
|
+
def user_data
|
30
|
+
# TODO to be moved in options
|
31
|
+
url = 'http://gw.api.taobao.com/router/rest'
|
32
|
+
|
33
|
+
query_param = {
|
34
|
+
:app_key => client_id,
|
35
|
+
|
36
|
+
# TODO to be moved in options
|
37
|
+
# TODO add more default fields (http://my.open.taobao.com/apidoc/index.htm#categoryId:1-dataStructId:3)
|
38
|
+
:fields => 'user_id,uid,nick,sex,buyer_credit,seller_credit,location,created,last_visit,birthday,type,status,alipay_no,alipay_account,alipay_account,email,consumer_protection,alipay_bind',
|
39
|
+
:format => 'json',
|
40
|
+
:method => 'taobao.user.get',
|
41
|
+
:session => @access_token.token,
|
42
|
+
:sign_method => 'md5',
|
43
|
+
:timestamp => Time.now.strftime("%Y-%m-%d %H:%M:%S"),
|
44
|
+
:v => '2.0'
|
45
|
+
}
|
46
|
+
query_param = generate_sign(query_param)
|
47
|
+
res = Net::HTTP.post_form(URI.parse(url), query_param)
|
48
|
+
@data ||= MultiJson.decode(res.body)["user_get_response"]["user"]
|
49
|
+
end
|
50
|
+
|
51
|
+
def request_phase
|
52
|
+
options[:state] ||= '1'
|
53
|
+
super
|
54
|
+
end
|
55
|
+
|
56
|
+
def user_info
|
57
|
+
{
|
58
|
+
'name' => user_data["nick"],
|
59
|
+
'email' => (user_data["email"] if user_data["email"]),
|
60
|
+
}
|
61
|
+
end
|
62
|
+
|
63
|
+
def auth_hash
|
64
|
+
OmniAuth::Utils.deep_merge(super, {
|
65
|
+
'uid' => user_data['uid'],
|
66
|
+
'user_info' => user_info,
|
67
|
+
'extra' => {'user_hash' => user_data}
|
68
|
+
})
|
69
|
+
end
|
70
|
+
|
71
|
+
def generate_sign(params)
|
72
|
+
str = client_secret + (params.sort.collect { |k, v| "#{k}#{v}" }).join + client_secret
|
73
|
+
params["sign"] = Digest::MD5.hexdigest(str).upcase!
|
74
|
+
params
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -29,17 +29,19 @@ module OmniAuth
|
|
29
29
|
|
30
30
|
def user_data
|
31
31
|
# http://vkontakte.ru/developers.php?o=-17680044&p=Description+of+Fields+of+the+fields+Parameter
|
32
|
-
@fields ||= ['uid', 'first_name', 'last_name', 'nickname', 'domain', 'sex', 'city', 'country', 'timezone', 'photo', 'photo_big']
|
32
|
+
@fields ||= ['uid', 'first_name', 'last_name', 'nickname', 'domain', 'sex', 'bdate', 'city', 'country', 'timezone', 'photo', 'photo_big']
|
33
33
|
|
34
34
|
# http://vkontakte.ru/developers.php?o=-1&p=getProfiles
|
35
35
|
@data ||= MultiJson.decode(@access_token.get("https://api.vkontakte.ru/method/getProfiles?uid=#{@access_token['user_id']}&fields=#{@fields.join(',')}&access_token=#{@access_token.token}"))['response'][0]
|
36
36
|
|
37
37
|
# we need these 2 additional requests since vkontakte returns only ids of the City and Country
|
38
38
|
# http://vkontakte.ru/developers.php?o=-17680044&p=getCities
|
39
|
-
|
39
|
+
cities = MultiJson.decode(@access_token.get("https://api.vkontakte.ru/method/getCities?cids=#{@data['city']}&access_token=#{@access_token.token}"))['response']
|
40
|
+
@city ||= cities.first['name'] if cities && cities.first
|
40
41
|
|
41
42
|
# http://vkontakte.ru/developers.php?o=-17680044&p=getCountries
|
42
|
-
|
43
|
+
countries = MultiJson.decode(@access_token.get("https://api.vkontakte.ru/method/getCountries?cids=#{@data['country']}&access_token=#{@access_token}"))['response']
|
44
|
+
@country ||= countries.first['name'] if countries && countries.first
|
43
45
|
end
|
44
46
|
|
45
47
|
def request_phase
|
@@ -49,10 +51,11 @@ module OmniAuth
|
|
49
51
|
|
50
52
|
def user_info
|
51
53
|
{
|
52
|
-
'
|
54
|
+
'first_name' => @data['first_name'],
|
53
55
|
'last_name' => @data['last_name'],
|
54
56
|
'name' => "#{@data['first_name']} #{@data['last_name']}",
|
55
57
|
'nickname' => @data['nickname'],
|
58
|
+
'birth_date' => @data['bdate'],
|
56
59
|
'image' => @data['photo'],
|
57
60
|
'location' => "#{@country}, #{@city}",
|
58
61
|
'urls' => {
|
data/lib/omniauth/version.rb
CHANGED
data/oa-oauth.gemspec
CHANGED
@@ -3,7 +3,6 @@ require File.expand_path('../lib/omniauth/version', __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.add_runtime_dependency 'faraday', '~> 0.6.1'
|
6
|
-
gem.add_runtime_dependency 'jruby-openssl', '~> 0.7.3' if RUBY_PLATFORM == 'java'
|
7
6
|
gem.add_runtime_dependency 'multi_json', '~> 1.0.0'
|
8
7
|
gem.add_runtime_dependency 'multi_xml', '~> 0.2.2'
|
9
8
|
gem.add_runtime_dependency 'oa-core', OmniAuth::Version::STRING
|
@@ -16,7 +15,7 @@ Gem::Specification.new do |gem|
|
|
16
15
|
gem.add_development_dependency 'rspec', '~> 2.5'
|
17
16
|
gem.add_development_dependency 'simplecov', '~> 0.4'
|
18
17
|
gem.add_development_dependency 'webmock', '~> 1.6'
|
19
|
-
gem.add_development_dependency 'yard', '~> 0.
|
18
|
+
gem.add_development_dependency 'yard', '~> 0.7'
|
20
19
|
gem.add_development_dependency 'ZenTest', '~> 4.5'
|
21
20
|
gem.name = 'oa-oauth'
|
22
21
|
gem.version = OmniAuth::Version::STRING
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: oa-oauth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Michael Bleigh
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-05-20 00:00:00 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: faraday
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
requirements:
|
55
55
|
- - "="
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: 0.2.
|
57
|
+
version: 0.2.6
|
58
58
|
type: :runtime
|
59
59
|
version_requirements: *id004
|
60
60
|
- !ruby/object:Gem::Dependency
|
@@ -164,7 +164,7 @@ dependencies:
|
|
164
164
|
requirements:
|
165
165
|
- - ~>
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version: "0.
|
167
|
+
version: "0.7"
|
168
168
|
type: :development
|
169
169
|
version_requirements: *id014
|
170
170
|
- !ruby/object:Gem::Dependency
|
@@ -192,6 +192,7 @@ files:
|
|
192
192
|
- .gemtest
|
193
193
|
- .rspec
|
194
194
|
- .yardopts
|
195
|
+
- Gemfile
|
195
196
|
- LICENSE
|
196
197
|
- README.rdoc
|
197
198
|
- Rakefile
|
@@ -215,12 +216,14 @@ files:
|
|
215
216
|
- lib/omniauth/strategies/instagram.rb
|
216
217
|
- lib/omniauth/strategies/instapaper.rb
|
217
218
|
- lib/omniauth/strategies/linked_in.rb
|
219
|
+
- lib/omniauth/strategies/mailru.rb
|
218
220
|
- lib/omniauth/strategies/meetup.rb
|
219
221
|
- lib/omniauth/strategies/miso.rb
|
220
222
|
- lib/omniauth/strategies/mixi.rb
|
221
223
|
- lib/omniauth/strategies/netflix.rb
|
222
224
|
- lib/omniauth/strategies/oauth.rb
|
223
225
|
- lib/omniauth/strategies/oauth2.rb
|
226
|
+
- lib/omniauth/strategies/plurk.rb
|
224
227
|
- lib/omniauth/strategies/qzone.rb
|
225
228
|
- lib/omniauth/strategies/rdio.rb
|
226
229
|
- lib/omniauth/strategies/renren.rb
|
@@ -228,6 +231,7 @@ files:
|
|
228
231
|
- lib/omniauth/strategies/smug_mug.rb
|
229
232
|
- lib/omniauth/strategies/sound_cloud.rb
|
230
233
|
- lib/omniauth/strategies/t163.rb
|
234
|
+
- lib/omniauth/strategies/taobao.rb
|
231
235
|
- lib/omniauth/strategies/teambox.rb
|
232
236
|
- lib/omniauth/strategies/thirty_seven_signals.rb
|
233
237
|
- lib/omniauth/strategies/tqq.rb
|
@@ -263,16 +267,19 @@ files:
|
|
263
267
|
- spec/omniauth/strategies/hyves_spec.rb
|
264
268
|
- spec/omniauth/strategies/identica_spec.rb
|
265
269
|
- spec/omniauth/strategies/linked_in_spec.rb
|
270
|
+
- spec/omniauth/strategies/mailru_spec.rb
|
266
271
|
- spec/omniauth/strategies/meetup_spec.rb
|
267
272
|
- spec/omniauth/strategies/miso_spec.rb
|
268
273
|
- spec/omniauth/strategies/netflix_spec.rb
|
269
274
|
- spec/omniauth/strategies/oauth2_spec.rb
|
270
275
|
- spec/omniauth/strategies/oauth_spec.rb
|
276
|
+
- spec/omniauth/strategies/plurk_spec.rb
|
271
277
|
- spec/omniauth/strategies/rdio_spec.rb
|
272
278
|
- spec/omniauth/strategies/salesforce_spec.rb
|
273
279
|
- spec/omniauth/strategies/smug_mug_spec.rb
|
274
280
|
- spec/omniauth/strategies/sound_cloud_spec.rb
|
275
281
|
- spec/omniauth/strategies/t163_spec.rb
|
282
|
+
- spec/omniauth/strategies/taobao_spec.rb
|
276
283
|
- spec/omniauth/strategies/teambox_spec.rb
|
277
284
|
- spec/omniauth/strategies/thirty_seven_signals_spec.rb
|
278
285
|
- spec/omniauth/strategies/trade_me_spec.rb
|
@@ -311,7 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
311
318
|
requirements: []
|
312
319
|
|
313
320
|
rubyforge_project:
|
314
|
-
rubygems_version: 1.
|
321
|
+
rubygems_version: 1.8.2
|
315
322
|
signing_key:
|
316
323
|
specification_version: 3
|
317
324
|
summary: OAuth strategies for OmniAuth.
|
@@ -333,16 +340,19 @@ test_files:
|
|
333
340
|
- spec/omniauth/strategies/hyves_spec.rb
|
334
341
|
- spec/omniauth/strategies/identica_spec.rb
|
335
342
|
- spec/omniauth/strategies/linked_in_spec.rb
|
343
|
+
- spec/omniauth/strategies/mailru_spec.rb
|
336
344
|
- spec/omniauth/strategies/meetup_spec.rb
|
337
345
|
- spec/omniauth/strategies/miso_spec.rb
|
338
346
|
- spec/omniauth/strategies/netflix_spec.rb
|
339
347
|
- spec/omniauth/strategies/oauth2_spec.rb
|
340
348
|
- spec/omniauth/strategies/oauth_spec.rb
|
349
|
+
- spec/omniauth/strategies/plurk_spec.rb
|
341
350
|
- spec/omniauth/strategies/rdio_spec.rb
|
342
351
|
- spec/omniauth/strategies/salesforce_spec.rb
|
343
352
|
- spec/omniauth/strategies/smug_mug_spec.rb
|
344
353
|
- spec/omniauth/strategies/sound_cloud_spec.rb
|
345
354
|
- spec/omniauth/strategies/t163_spec.rb
|
355
|
+
- spec/omniauth/strategies/taobao_spec.rb
|
346
356
|
- spec/omniauth/strategies/teambox_spec.rb
|
347
357
|
- spec/omniauth/strategies/thirty_seven_signals_spec.rb
|
348
358
|
- spec/omniauth/strategies/trade_me_spec.rb
|
@@ -358,4 +368,3 @@ test_files:
|
|
358
368
|
- spec/omniauth/strategies/you_tube_spec.rb
|
359
369
|
- spec/spec_helper.rb
|
360
370
|
- spec/support/shared_examples.rb
|
361
|
-
has_rdoc:
|