muck-oauth 0.1.3 → 0.1.4
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/Rakefile +1 -0
- data/VERSION +1 -1
- data/app/controllers/oauth_consumers_controller.rb +8 -6
- data/app/views/oauth_consumers/_oauth_fancybox_scripts.html.erb +3 -3
- data/config/initializers/oauth_consumers.rb +11 -1
- data/lib/muck_oauth.rb +6 -0
- data/lib/muck_oauth/exceptions.rb +5 -0
- data/{app/models → lib/muck_oauth/services}/friendfeed_token.rb +6 -2
- data/lib/muck_oauth/services/google_token.rb +71 -0
- data/{app/models → lib/muck_oauth/services}/linkedin_token.rb +1 -1
- data/{app/models → lib/muck_oauth/services}/yahoo_token.rb +0 -0
- data/locales/en.yml +1 -0
- data/muck-oauth.gemspec +10 -5
- metadata +17 -5
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
@@ -2,11 +2,17 @@ require 'oauth/controllers/consumer_controller'
|
|
2
2
|
class OauthConsumersController < ApplicationController
|
3
3
|
include Oauth::Controllers::ConsumerController
|
4
4
|
|
5
|
-
layout :choose_layout
|
6
|
-
|
7
5
|
def index
|
8
6
|
end
|
9
7
|
|
8
|
+
def show
|
9
|
+
if @token
|
10
|
+
render 'oauth_consumers/show', :layout => false
|
11
|
+
else
|
12
|
+
super
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
10
16
|
protected
|
11
17
|
|
12
18
|
# Change this to decide where you want to redirect user to after callback is finished.
|
@@ -17,8 +23,4 @@ class OauthConsumersController < ApplicationController
|
|
17
23
|
redirect_back_or_default('/')
|
18
24
|
end
|
19
25
|
|
20
|
-
def choose_layout
|
21
|
-
'popup'
|
22
|
-
end
|
23
|
-
|
24
26
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<% content_for :javascript do -%>
|
2
2
|
jQuery(document).ready(function() {
|
3
3
|
jQuery('a.oauthfancybox').fancybox({
|
4
|
-
'hideOnContentClick':
|
4
|
+
'hideOnContentClick': false,
|
5
5
|
'overlayShow': true,
|
6
|
-
'frameWidth':
|
7
|
-
'frameHeight':
|
6
|
+
'frameWidth': 400,
|
7
|
+
'frameHeight': 300
|
8
8
|
});
|
9
9
|
});
|
10
10
|
<% end -%>
|
@@ -6,17 +6,27 @@
|
|
6
6
|
credentials = {}
|
7
7
|
credentials[:twitter] = { :key => GlobalConfig.twitter_oauth_key,
|
8
8
|
:secret => GlobalConfig.twitter_oauth_secret } if GlobalConfig.twitter_oauth_key
|
9
|
-
|
9
|
+
|
10
|
+
# see http://code.google.com/apis/gdata/faq.html#AuthScopes
|
11
|
+
credentials[:google] = { :scope => ["https://mail.google.com/mail/feed/atom/",
|
12
|
+
"https://www.google.com/calendar/feeds/",
|
13
|
+
"https://www.google.com/m8/feeds/",
|
14
|
+
"http://www-opensocial.googleusercontent.com/api/people"].join(' '),
|
10
15
|
:key => GlobalConfig.google_oauth_key,
|
11
16
|
:secret => GlobalConfig.google_oauth_secret } if GlobalConfig.google_oauth_key
|
17
|
+
|
12
18
|
credentials[:yahoo] = { :key => GlobalConfig.yahoo_oauth_key,
|
13
19
|
:secret => GlobalConfig.yahoo_oauth_secret } if GlobalConfig.yahoo_oauth_key
|
20
|
+
|
14
21
|
credentials[:flickr] = { :key => GlobalConfig.flickr_oauth_key,
|
15
22
|
:secret => GlobalConfig.flickr_oauth_secret } if GlobalConfig.flickr_oauth_key
|
23
|
+
|
16
24
|
credentials[:linkedin] = { :key => GlobalConfig.linkedin_oauth_key,
|
17
25
|
:secret => GlobalConfig.linkedin_oauth_secret } if GlobalConfig.linkedin_oauth_key
|
26
|
+
|
18
27
|
credentials[:fireeagle] = { :key => GlobalConfig.fireeagle_oauth_key,
|
19
28
|
:secret => GlobalConfig.fireeagle_oauth_secret } if GlobalConfig.fireeagle_oauth_key
|
29
|
+
|
20
30
|
credentials[:friendfeed] = { :key => GlobalConfig.friendfeed_oauth_key,
|
21
31
|
:secret => GlobalConfig.friendfeed_oauth_secret } if GlobalConfig.friendfeed_oauth_key
|
22
32
|
|
data/lib/muck_oauth.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
+
require 'muck_oauth/services/friendfeed_token'
|
2
|
+
require 'muck_oauth/services/google_token'
|
3
|
+
require 'muck_oauth/services/linkedin_token'
|
4
|
+
require 'muck_oauth/services/yahoo_token'
|
5
|
+
require 'muck_oauth/exceptions'
|
1
6
|
|
2
7
|
ActionController::Base.send :helper, MuckOauthHelper
|
3
8
|
|
4
9
|
ActiveRecord::Base.class_eval { include ActiveRecord::Acts::MuckOauthUser }
|
10
|
+
ActiveRecord::Base.class_eval { include MuckOauth::Exceptions }
|
5
11
|
|
6
12
|
I18n.load_path += Dir[ File.join(File.dirname(__FILE__), '..', 'locales', '*.{rb,yml}') ]
|
@@ -3,7 +3,7 @@ class FriendfeedToken < ConsumerToken
|
|
3
3
|
:site => "https://friendfeed.com",
|
4
4
|
:request_token_path => "/account/oauth/request_token",
|
5
5
|
:authorize_path => "/account/oauth/authorize",
|
6
|
-
:access_token_path => "/
|
6
|
+
:access_token_path => "/account/oauth/access_token",
|
7
7
|
}
|
8
8
|
|
9
9
|
def self.consumer
|
@@ -18,4 +18,8 @@ class FriendfeedToken < ConsumerToken
|
|
18
18
|
consumer.get_request_token({ :oauth_callback => callback_url })
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
def client
|
22
|
+
raise 'Implement client for friend feed.'
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'portablecontacts'
|
2
|
+
|
3
|
+
class GoogleToken < ConsumerToken
|
4
|
+
|
5
|
+
GOOGLE_SETTINGS={
|
6
|
+
:site=>"https://www.google.com",
|
7
|
+
:request_token_path => "/accounts/OAuthGetRequestToken",
|
8
|
+
:authorize_path => "/accounts/OAuthAuthorizeToken",
|
9
|
+
:access_token_path => "/accounts/OAuthGetAccessToken",
|
10
|
+
}
|
11
|
+
|
12
|
+
def self.consumer
|
13
|
+
@consumer||=create_consumer
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.create_consumer(options={})
|
17
|
+
OAuth::Consumer.new credentials[:key], credentials[:secret], GOOGLE_SETTINGS.merge(options)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.get_request_token(callback_url, scope=nil)
|
21
|
+
consumer.get_request_token({:oauth_callback=>callback_url}, :scope=>scope||credentials[:scope]||"http://www-opensocial.googleusercontent.com/api/people")
|
22
|
+
end
|
23
|
+
|
24
|
+
def portable_contacts
|
25
|
+
@portable_contacts||= PortableContacts::Client.new "http://www-opensocial.googleusercontent.com/api/people", client
|
26
|
+
end
|
27
|
+
|
28
|
+
# Gets and parses contacts from google into objects.
|
29
|
+
# limit: Maximum number of contacts to retrieve
|
30
|
+
def contacts(limit = 10000)
|
31
|
+
convert_google_contacts_json_to_users(load_contacts(limit))
|
32
|
+
end
|
33
|
+
|
34
|
+
# Loads contacts using Google api and OAuth token.
|
35
|
+
def load_contacts(limit = 10000)
|
36
|
+
get("http://www.google.com/m8/feeds/contacts/default/full?max-results=#{limit}")
|
37
|
+
end
|
38
|
+
|
39
|
+
# Converts json returned from google into a feed object
|
40
|
+
def convert_google_contacts_json_to_users(json)
|
41
|
+
if json['feed'] && json['feed']['entry']
|
42
|
+
json['feed']['entry'].collect do |entry|
|
43
|
+
emails = entry['gd$email'].collect { |gd| gd['address'] } if entry['gd$email']
|
44
|
+
phones = entry['gd$phoneNumber'].collect { |gd| gd['t'] } if entry['gd$phoneNumber']
|
45
|
+
if entry['gd$name']
|
46
|
+
first_name = entry['gd$name']['gd$givenName'] if entry['gd$name']['gd$givenName']
|
47
|
+
last_name = entry['gd$name']['gd$familyName'] if entry['gd$name']['gd$familyName']
|
48
|
+
end
|
49
|
+
OpenStruct.new( { :emails => emails,
|
50
|
+
:phones => phones,
|
51
|
+
:first_name => first_name,
|
52
|
+
:last_name => last_name } )
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# Loads a user's groups using Google api and OAuth token.
|
58
|
+
def load_groups(limit = 10000)
|
59
|
+
get("http://www.google.com/m8/feeds/groups/default/full?max-results=#{limit}")
|
60
|
+
end
|
61
|
+
|
62
|
+
def get(path)
|
63
|
+
response = self.client.get(path + "&alt=json&v=3.0")
|
64
|
+
if response.code == '200'
|
65
|
+
JSON.parse(response.body)
|
66
|
+
else
|
67
|
+
raise MuckOauth::Exceptions::HTTPResultError, I18n.t('muck.oauth.http_result_error', :error => response.to_s)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -22,7 +22,7 @@ class LinkedinToken < ConsumerToken
|
|
22
22
|
|
23
23
|
def client
|
24
24
|
unless @client
|
25
|
-
@client = LinkedIn::Client.new(
|
25
|
+
@client = ::LinkedIn::Client.new(LinkedinToken.consumer.key, LinkedinToken.consumer.secret)
|
26
26
|
@client.authorize_from_access(token, secret)
|
27
27
|
end
|
28
28
|
@client
|
File without changes
|
data/locales/en.yml
CHANGED
data/muck-oauth.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{muck-oauth}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Justin Ball"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-24}
|
13
13
|
s.description = %q{A simple wrapper for the oauth and oauth-plugin gems so that it is faster to include oauth in muck based applications.}
|
14
14
|
s.email = %q{justin@tatemae.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -30,12 +30,9 @@ Gem::Specification.new do |s|
|
|
30
30
|
"app/models/access_token.rb",
|
31
31
|
"app/models/client_application.rb",
|
32
32
|
"app/models/consumer_token.rb",
|
33
|
-
"app/models/friendfeed_token.rb",
|
34
|
-
"app/models/linkedin_token.rb",
|
35
33
|
"app/models/oauth_nonce.rb",
|
36
34
|
"app/models/oauth_token.rb",
|
37
35
|
"app/models/request_token.rb",
|
38
|
-
"app/models/yahoo_token.rb",
|
39
36
|
"app/views/oauth/authorize.html.erb",
|
40
37
|
"app/views/oauth/authorize_failure.html.erb",
|
41
38
|
"app/views/oauth/authorize_success.html.erb",
|
@@ -55,7 +52,12 @@ Gem::Specification.new do |s|
|
|
55
52
|
"db/migrate/20091210172015_create_oauth_tables.rb",
|
56
53
|
"lib/active_record/acts/muck_oauth_user.rb",
|
57
54
|
"lib/muck_oauth.rb",
|
55
|
+
"lib/muck_oauth/exceptions.rb",
|
58
56
|
"lib/muck_oauth/initialize_routes.rb",
|
57
|
+
"lib/muck_oauth/services/friendfeed_token.rb",
|
58
|
+
"lib/muck_oauth/services/google_token.rb",
|
59
|
+
"lib/muck_oauth/services/linkedin_token.rb",
|
60
|
+
"lib/muck_oauth/services/yahoo_token.rb",
|
59
61
|
"lib/muck_oauth/tasks.rb",
|
60
62
|
"locales/ar.yml",
|
61
63
|
"locales/bg.yml",
|
@@ -1826,6 +1828,7 @@ Gem::Specification.new do |s|
|
|
1826
1828
|
s.add_runtime_dependency(%q<agree2>, [">= 0"])
|
1827
1829
|
s.add_runtime_dependency(%q<fireeagle>, [">= 0"])
|
1828
1830
|
s.add_runtime_dependency(%q<linkedin>, [">= 0"])
|
1831
|
+
s.add_runtime_dependency(%q<overlord>, [">= 0"])
|
1829
1832
|
s.add_runtime_dependency(%q<muck-engine>, [">= 0"])
|
1830
1833
|
s.add_runtime_dependency(%q<muck-users>, [">= 0"])
|
1831
1834
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
@@ -1837,6 +1840,7 @@ Gem::Specification.new do |s|
|
|
1837
1840
|
s.add_dependency(%q<agree2>, [">= 0"])
|
1838
1841
|
s.add_dependency(%q<fireeagle>, [">= 0"])
|
1839
1842
|
s.add_dependency(%q<linkedin>, [">= 0"])
|
1843
|
+
s.add_dependency(%q<overlord>, [">= 0"])
|
1840
1844
|
s.add_dependency(%q<muck-engine>, [">= 0"])
|
1841
1845
|
s.add_dependency(%q<muck-users>, [">= 0"])
|
1842
1846
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
@@ -1849,6 +1853,7 @@ Gem::Specification.new do |s|
|
|
1849
1853
|
s.add_dependency(%q<agree2>, [">= 0"])
|
1850
1854
|
s.add_dependency(%q<fireeagle>, [">= 0"])
|
1851
1855
|
s.add_dependency(%q<linkedin>, [">= 0"])
|
1856
|
+
s.add_dependency(%q<overlord>, [">= 0"])
|
1852
1857
|
s.add_dependency(%q<muck-engine>, [">= 0"])
|
1853
1858
|
s.add_dependency(%q<muck-users>, [">= 0"])
|
1854
1859
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muck-oauth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Ball
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-24 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -82,6 +82,16 @@ dependencies:
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: "0"
|
84
84
|
version:
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: overlord
|
87
|
+
type: :runtime
|
88
|
+
version_requirement:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: "0"
|
94
|
+
version:
|
85
95
|
- !ruby/object:Gem::Dependency
|
86
96
|
name: muck-engine
|
87
97
|
type: :runtime
|
@@ -135,12 +145,9 @@ files:
|
|
135
145
|
- app/models/access_token.rb
|
136
146
|
- app/models/client_application.rb
|
137
147
|
- app/models/consumer_token.rb
|
138
|
-
- app/models/friendfeed_token.rb
|
139
|
-
- app/models/linkedin_token.rb
|
140
148
|
- app/models/oauth_nonce.rb
|
141
149
|
- app/models/oauth_token.rb
|
142
150
|
- app/models/request_token.rb
|
143
|
-
- app/models/yahoo_token.rb
|
144
151
|
- app/views/oauth/authorize.html.erb
|
145
152
|
- app/views/oauth/authorize_failure.html.erb
|
146
153
|
- app/views/oauth/authorize_success.html.erb
|
@@ -160,7 +167,12 @@ files:
|
|
160
167
|
- db/migrate/20091210172015_create_oauth_tables.rb
|
161
168
|
- lib/active_record/acts/muck_oauth_user.rb
|
162
169
|
- lib/muck_oauth.rb
|
170
|
+
- lib/muck_oauth/exceptions.rb
|
163
171
|
- lib/muck_oauth/initialize_routes.rb
|
172
|
+
- lib/muck_oauth/services/friendfeed_token.rb
|
173
|
+
- lib/muck_oauth/services/google_token.rb
|
174
|
+
- lib/muck_oauth/services/linkedin_token.rb
|
175
|
+
- lib/muck_oauth/services/yahoo_token.rb
|
164
176
|
- lib/muck_oauth/tasks.rb
|
165
177
|
- locales/ar.yml
|
166
178
|
- locales/bg.yml
|