oauth-plugin 0.3.12 → 0.3.13
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/CHANGELOG
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
+
10/05/2009
|
2
|
+
0.3.13
|
3
|
+
- Got rid of yahoo token. To support it correctly requires way too much work. Let them suffer the consequences of their decissions.
|
4
|
+
- GoogleToken now uses portablecontacts gem
|
1
5
|
9/30/2009
|
6
|
+
0.3.12
|
2
7
|
- Added a simple PortableContacts adapter for GoogleToken
|
3
8
|
- Added a SimpleClient wrapper to provide really simple wrapper for OAuth based json web services
|
4
9
|
- Increased token size in consumer_tokens table because of Yahoo's oversized tokens
|
data/Rakefile
CHANGED
@@ -28,11 +28,16 @@ begin
|
|
28
28
|
gemspec.summary = "Ruby on Rails Plugin for OAuth Provider and Consumer"
|
29
29
|
gemspec.description = "Rails plugin for implementing an OAuth Provider or Consumer"
|
30
30
|
gemspec.email = "oauth-ruby@googlegroups.com"
|
31
|
-
gemspec.homepage = "http://github.com/pelle/oauth-plugin
|
31
|
+
gemspec.homepage = "http://github.com/pelle/oauth-plugin"
|
32
32
|
gemspec.authors = ["Pelle Braendgaard"]
|
33
33
|
gemspec.add_dependency('oauth', '>= 0.3.5')
|
34
34
|
gemspec.rubyforge_project = 'oauth'
|
35
35
|
end
|
36
|
+
|
37
|
+
Jeweler::RubyforgeTasks.new do |rubyforge|
|
38
|
+
rubyforge.doc_task = "rdoc"
|
39
|
+
end
|
40
|
+
|
36
41
|
rescue LoadError
|
37
42
|
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
38
43
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.13
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'portablecontacts'
|
2
|
+
|
1
3
|
class GoogleToken < ConsumerToken
|
2
4
|
GOOGLE_SETTINGS={
|
3
5
|
:site=>"https://www.google.com",
|
@@ -13,29 +15,13 @@ class GoogleToken < ConsumerToken
|
|
13
15
|
def self.create_consumer(options={})
|
14
16
|
OAuth::Consumer.new credentials[:key],credentials[:secret],GOOGLE_SETTINGS.merge(options)
|
15
17
|
end
|
16
|
-
|
17
|
-
def self.portable_contacts_consumer
|
18
|
-
@portable_contacts_consumer||= create_consumer :site=>"http://www-opensocial.googleusercontent.com"
|
19
|
-
end
|
20
|
-
|
21
|
-
|
18
|
+
|
22
19
|
def self.get_request_token(callback_url, scope=nil)
|
23
20
|
consumer.get_request_token({:oauth_callback=>callback_url}, :scope=>scope||credentials[:scope]||"http://www-opensocial.googleusercontent.com/api/people")
|
24
21
|
end
|
25
22
|
|
26
23
|
def portable_contacts
|
27
|
-
@portable_contacts||=
|
24
|
+
@portable_contacts||= PortableContacts::Client.new "http://www-opensocial.googleusercontent.com/api/people", client
|
28
25
|
end
|
29
|
-
|
30
|
-
class GooglePortableContacts < Oauth::Models::Consumers::SimpleClient
|
31
26
|
|
32
|
-
def me
|
33
|
-
get("/api/people/@me/@self")
|
34
|
-
end
|
35
|
-
|
36
|
-
def all
|
37
|
-
get("/api/people/@me/@all")
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
27
|
end
|
data/oauth-plugin.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{oauth-plugin}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.13"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Pelle Braendgaard"]
|
12
|
-
s.date = %q{2009-
|
12
|
+
s.date = %q{2009-10-05}
|
13
13
|
s.description = %q{Rails plugin for implementing an OAuth Provider or Consumer}
|
14
14
|
s.email = %q{oauth-ruby@googlegroups.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -85,7 +85,6 @@ Gem::Specification.new do |s|
|
|
85
85
|
"lib/oauth/models/consumers/services/fireeagle_token.rb",
|
86
86
|
"lib/oauth/models/consumers/services/google_token.rb",
|
87
87
|
"lib/oauth/models/consumers/services/twitter_token.rb",
|
88
|
-
"lib/oauth/models/consumers/services/yahoo_token.rb",
|
89
88
|
"lib/oauth/models/consumers/simple_client.rb",
|
90
89
|
"lib/oauth/models/consumers/token.rb",
|
91
90
|
"oauth-plugin.gemspec",
|
@@ -93,7 +92,7 @@ Gem::Specification.new do |s|
|
|
93
92
|
"tasks/oauth_tasks.rake",
|
94
93
|
"uninstall.rb"
|
95
94
|
]
|
96
|
-
s.homepage = %q{http://github.com/pelle/oauth-plugin
|
95
|
+
s.homepage = %q{http://github.com/pelle/oauth-plugin}
|
97
96
|
s.rdoc_options = ["--charset=UTF-8"]
|
98
97
|
s.require_paths = ["lib"]
|
99
98
|
s.rubyforge_project = %q{oauth}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oauth-plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pelle Braendgaard
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-10-05 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -100,7 +100,6 @@ files:
|
|
100
100
|
- lib/oauth/models/consumers/services/fireeagle_token.rb
|
101
101
|
- lib/oauth/models/consumers/services/google_token.rb
|
102
102
|
- lib/oauth/models/consumers/services/twitter_token.rb
|
103
|
-
- lib/oauth/models/consumers/services/yahoo_token.rb
|
104
103
|
- lib/oauth/models/consumers/simple_client.rb
|
105
104
|
- lib/oauth/models/consumers/token.rb
|
106
105
|
- oauth-plugin.gemspec
|
@@ -108,7 +107,7 @@ files:
|
|
108
107
|
- tasks/oauth_tasks.rake
|
109
108
|
- uninstall.rb
|
110
109
|
has_rdoc: true
|
111
|
-
homepage: http://github.com/pelle/oauth-plugin
|
110
|
+
homepage: http://github.com/pelle/oauth-plugin
|
112
111
|
licenses: []
|
113
112
|
|
114
113
|
post_install_message:
|
@@ -1,109 +0,0 @@
|
|
1
|
-
class YahooToken < ConsumerToken
|
2
|
-
YAHOO_SETTINGS={
|
3
|
-
:site=>"https://www.yahoo.com",
|
4
|
-
:request_token_url => "https://api.login.yahoo.com/oauth/v2/get_request_token",
|
5
|
-
:authorize_url => "https://api.login.yahoo.com/oauth/v2/request_auth",
|
6
|
-
:access_token_url => "https://api.login.yahoo.com/oauth/v2/get_token"
|
7
|
-
}
|
8
|
-
|
9
|
-
def self.consumer
|
10
|
-
@consumer||=create_consumer
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.create_consumer(options={})
|
14
|
-
OAuth::Consumer.new credentials[:key],credentials[:secret],YAHOO_SETTINGS.merge(options)
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.social_apis_consumer
|
18
|
-
@social_api_consumer||=create_consumer :site=>"http://social.yahooapis.com/v1"
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.get_request_token(callback_url, scope=nil)
|
22
|
-
YahooRequestToken.new consumer.get_request_token({:oauth_callback=>callback_url}, :scope=>scope||credentials[:scope])
|
23
|
-
end
|
24
|
-
|
25
|
-
# We need to do some special handling to handle this strange parameter:
|
26
|
-
#
|
27
|
-
class YahooRequestToken < OAuth::RequestToken
|
28
|
-
def initialize(real_token)
|
29
|
-
super real_token.consumer,real_token.token,real_token.secret
|
30
|
-
@params=real_token.params
|
31
|
-
end
|
32
|
-
|
33
|
-
# handle xoauth_request_auth_url
|
34
|
-
def authorize_url(params = nil)
|
35
|
-
if @params[:xoauth_request_auth_url]
|
36
|
-
return @params[:xoauth_request_auth_url]
|
37
|
-
else
|
38
|
-
super params
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def social_api
|
44
|
-
@social_api ||= SocialAPI.new(OAuth::AccessToken.new( self.class.social_apis_consumer, token, secret))
|
45
|
-
end
|
46
|
-
|
47
|
-
class SocialAPI < Oauth::Models::Consumers::SimpleClient
|
48
|
-
# initial implementation of this
|
49
|
-
# http://developer.yahoo.com/social/rest_api_guide/index.html
|
50
|
-
# Please fork and submit improvements here
|
51
|
-
def guid
|
52
|
-
@guid||=get("/v1/me/guid")["guid"]["value"]
|
53
|
-
end
|
54
|
-
|
55
|
-
def usercard
|
56
|
-
get("/v1/user/#{guid}/profile/usercard")
|
57
|
-
end
|
58
|
-
|
59
|
-
def idcard
|
60
|
-
get("/v1/user/#{guid}/profile/idcard")
|
61
|
-
end
|
62
|
-
|
63
|
-
def tinyusercard
|
64
|
-
get("/v1/user/#{guid}/profile/tinyusercard")
|
65
|
-
end
|
66
|
-
|
67
|
-
def profile
|
68
|
-
get("/v1/user/#{guid}/profile")
|
69
|
-
end
|
70
|
-
|
71
|
-
def contacts
|
72
|
-
get("/v1/user/#{guid}/contacts")
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
|
-
# I have reported this as a bug to Yahoo, but on certain occassions their tokens are returned with spaces that confuse CGI.parse.
|
80
|
-
# The only change below is that it strips the response.body. Once Yahoo fixes this I will remove this whole section.
|
81
|
-
module OAuth
|
82
|
-
class Consumer
|
83
|
-
|
84
|
-
def token_request(http_method, path, token = nil, request_options = {}, *arguments)
|
85
|
-
response = request(http_method, path, token, request_options, *arguments)
|
86
|
-
|
87
|
-
case response.code.to_i
|
88
|
-
|
89
|
-
when (200..299)
|
90
|
-
# symbolize keys
|
91
|
-
# TODO this could be considered unexpected behavior; symbols or not?
|
92
|
-
# TODO this also drops subsequent values from multi-valued keys
|
93
|
-
|
94
|
-
CGI.parse(response.body.strip).inject({}) do |h,(k,v)|
|
95
|
-
h[k.to_sym] = v.first
|
96
|
-
h[k] = v.first
|
97
|
-
h
|
98
|
-
end
|
99
|
-
when (300..399)
|
100
|
-
# this is a redirect
|
101
|
-
response.error!
|
102
|
-
when (400..499)
|
103
|
-
raise OAuth::Unauthorized, response
|
104
|
-
else
|
105
|
-
response.error!
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|