fb_graph 0.3.0 → 0.4.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.
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/fb_graph.gemspec +7 -2
- data/lib/fb_graph.rb +2 -0
- data/lib/fb_graph/auth.rb +32 -0
- data/lib/fb_graph/auth/cookie.rb +41 -0
- data/lib/fb_graph/node.rb +6 -1
- metadata +24 -8
data/Rakefile
CHANGED
|
@@ -13,6 +13,7 @@ begin
|
|
|
13
13
|
gem.add_dependency 'json'
|
|
14
14
|
gem.add_dependency 'activesupport'
|
|
15
15
|
gem.add_dependency 'rest-client', '>= 1.4'
|
|
16
|
+
gem.add_dependency 'oauth2', '>= 0.0.10'
|
|
16
17
|
gem.add_development_dependency 'rspec'
|
|
17
18
|
gem.add_development_dependency 'rcov'
|
|
18
19
|
gem.add_development_dependency 'fakeweb'
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.4.0
|
data/fb_graph.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{fb_graph}
|
|
8
|
-
s.version = "0.
|
|
8
|
+
s.version = "0.4.0"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["nov matake"]
|
|
12
|
-
s.date = %q{2010-08-
|
|
12
|
+
s.date = %q{2010-08-05}
|
|
13
13
|
s.description = %q{A Ruby wrapper for Facebook Graph API}
|
|
14
14
|
s.email = %q{nov@matake.jp}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -28,6 +28,8 @@ Gem::Specification.new do |s|
|
|
|
28
28
|
"fb_graph.gemspec",
|
|
29
29
|
"lib/fb_graph.rb",
|
|
30
30
|
"lib/fb_graph/album.rb",
|
|
31
|
+
"lib/fb_graph/auth.rb",
|
|
32
|
+
"lib/fb_graph/auth/cookie.rb",
|
|
31
33
|
"lib/fb_graph/collection.rb",
|
|
32
34
|
"lib/fb_graph/comment.rb",
|
|
33
35
|
"lib/fb_graph/comparison.rb",
|
|
@@ -262,6 +264,7 @@ Gem::Specification.new do |s|
|
|
|
262
264
|
s.add_runtime_dependency(%q<json>, [">= 0"])
|
|
263
265
|
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
|
264
266
|
s.add_runtime_dependency(%q<rest-client>, [">= 1.4"])
|
|
267
|
+
s.add_runtime_dependency(%q<oauth2>, [">= 0.0.10"])
|
|
265
268
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
|
266
269
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
|
267
270
|
s.add_development_dependency(%q<fakeweb>, [">= 0"])
|
|
@@ -269,6 +272,7 @@ Gem::Specification.new do |s|
|
|
|
269
272
|
s.add_dependency(%q<json>, [">= 0"])
|
|
270
273
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
|
271
274
|
s.add_dependency(%q<rest-client>, [">= 1.4"])
|
|
275
|
+
s.add_dependency(%q<oauth2>, [">= 0.0.10"])
|
|
272
276
|
s.add_dependency(%q<rspec>, [">= 0"])
|
|
273
277
|
s.add_dependency(%q<rcov>, [">= 0"])
|
|
274
278
|
s.add_dependency(%q<fakeweb>, [">= 0"])
|
|
@@ -277,6 +281,7 @@ Gem::Specification.new do |s|
|
|
|
277
281
|
s.add_dependency(%q<json>, [">= 0"])
|
|
278
282
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
|
279
283
|
s.add_dependency(%q<rest-client>, [">= 1.4"])
|
|
284
|
+
s.add_dependency(%q<oauth2>, [">= 0.0.10"])
|
|
280
285
|
s.add_dependency(%q<rspec>, [">= 0"])
|
|
281
286
|
s.add_dependency(%q<rcov>, [">= 0"])
|
|
282
287
|
s.add_dependency(%q<fakeweb>, [">= 0"])
|
data/lib/fb_graph.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'rubygems'
|
|
2
2
|
require 'json'
|
|
3
3
|
require 'restclient'
|
|
4
|
+
require 'oauth2'
|
|
4
5
|
|
|
5
6
|
# NOTE:
|
|
6
7
|
# For some reason, ActiveSupport 3.0.0 doesn'tj load whole code.
|
|
@@ -37,6 +38,7 @@ module FbGraph
|
|
|
37
38
|
|
|
38
39
|
end
|
|
39
40
|
|
|
41
|
+
require 'fb_graph/auth'
|
|
40
42
|
require 'fb_graph/comparison'
|
|
41
43
|
require 'fb_graph/collection'
|
|
42
44
|
require 'fb_graph/connections'
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module FbGraph
|
|
2
|
+
class Auth
|
|
3
|
+
class VerificationFailed < FbGraph::Exception; end
|
|
4
|
+
|
|
5
|
+
attr_accessor :client, :access_token, :user
|
|
6
|
+
|
|
7
|
+
def initialize(client_id, client_secret, options = {})
|
|
8
|
+
@client = OAuth2::Client.new(client_id, client_secret, options.merge(
|
|
9
|
+
:site => FbGraph::ROOT_URL
|
|
10
|
+
))
|
|
11
|
+
if options[:cookie].present?
|
|
12
|
+
from_cookie(options[:cookie])
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def from_cookie(cookie)
|
|
17
|
+
cookie = FbGraph::Auth::Cookie.parse(self.client, cookie)
|
|
18
|
+
self.access_token = OAuth2::AccessToken.new(
|
|
19
|
+
self.client,
|
|
20
|
+
cookie[:access_token],
|
|
21
|
+
cookie[:refresh_token],
|
|
22
|
+
cookie[:expires]
|
|
23
|
+
)
|
|
24
|
+
self.user = FbGraph::User.new(cookie[:uid], :access_token => self.access_token)
|
|
25
|
+
self
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
Dir[File.dirname(__FILE__) + '/auth/*.rb'].each do |file|
|
|
31
|
+
require file
|
|
32
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'digest/md5'
|
|
2
|
+
|
|
3
|
+
module FbGraph
|
|
4
|
+
class Auth
|
|
5
|
+
class Cookie
|
|
6
|
+
def self.parse(client, cookie)
|
|
7
|
+
fb_cookie_string = if cookie.is_a?(Hash)
|
|
8
|
+
cookie["fbs_#{client.id}"]
|
|
9
|
+
else
|
|
10
|
+
cookie
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
raise VerificationFailed.new(401, 'Facebook cookie not found') if fb_cookie_string.blank?
|
|
14
|
+
|
|
15
|
+
fb_cookie_string.gsub!(/[\\"]/, '')
|
|
16
|
+
signature, fb_cookie = '', {}
|
|
17
|
+
fb_cookie_string.split('&').each do |kv|
|
|
18
|
+
k, v = kv.split('=')
|
|
19
|
+
if k == 'sig'
|
|
20
|
+
signature = v
|
|
21
|
+
else
|
|
22
|
+
v = v.to_i if ['uid', 'expires'].include?(k)
|
|
23
|
+
fb_cookie[k] = v
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
signature_base_string = fb_cookie.to_a.sort do |a, b|
|
|
28
|
+
a[0] <=> b[0] || a[1] <=> b[1]
|
|
29
|
+
end.map do |(k, v)|
|
|
30
|
+
"#{k}=#{v}"
|
|
31
|
+
end.join
|
|
32
|
+
|
|
33
|
+
unless Digest::MD5.hexdigest("#{signature_base_string}#{client.secret}") == signature
|
|
34
|
+
raise VerificationFailed.new(401, 'Facebook cookie signature invalid')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
fb_cookie.with_indifferent_access
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
data/lib/fb_graph/node.rb
CHANGED
|
@@ -13,7 +13,7 @@ module FbGraph
|
|
|
13
13
|
def fetch(options = {})
|
|
14
14
|
options[:access_token] ||= self.access_token if self.access_token
|
|
15
15
|
_fetched_ = get(options)
|
|
16
|
-
self.class.new(_fetched_.delete(:id), _fetched_)
|
|
16
|
+
self.class.new(_fetched_.delete(:id), _fetched_.merge(:access_token => options[:access_token]))
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def self.fetch(identifier, options = {})
|
|
@@ -59,7 +59,12 @@ module FbGraph
|
|
|
59
59
|
else
|
|
60
60
|
self.endpoint
|
|
61
61
|
end
|
|
62
|
+
|
|
62
63
|
params[:access_token] ||= self.access_token
|
|
64
|
+
if params[:access_token].is_a?(OAuth2::AccessToken)
|
|
65
|
+
params[:access_token] = params[:access_token].token
|
|
66
|
+
end
|
|
67
|
+
|
|
63
68
|
params.delete_if do |k, v|
|
|
64
69
|
v.blank?
|
|
65
70
|
end
|
metadata
CHANGED
|
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
|
4
4
|
prerelease: false
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
|
-
-
|
|
7
|
+
- 4
|
|
8
8
|
- 0
|
|
9
|
-
version: 0.
|
|
9
|
+
version: 0.4.0
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- nov matake
|
|
@@ -14,7 +14,7 @@ autorequire:
|
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
16
|
|
|
17
|
-
date: 2010-08-
|
|
17
|
+
date: 2010-08-05 00:00:00 +09:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
@@ -55,7 +55,7 @@ dependencies:
|
|
|
55
55
|
type: :runtime
|
|
56
56
|
version_requirements: *id003
|
|
57
57
|
- !ruby/object:Gem::Dependency
|
|
58
|
-
name:
|
|
58
|
+
name: oauth2
|
|
59
59
|
prerelease: false
|
|
60
60
|
requirement: &id004 !ruby/object:Gem::Requirement
|
|
61
61
|
requirements:
|
|
@@ -63,11 +63,13 @@ dependencies:
|
|
|
63
63
|
- !ruby/object:Gem::Version
|
|
64
64
|
segments:
|
|
65
65
|
- 0
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
- 0
|
|
67
|
+
- 10
|
|
68
|
+
version: 0.0.10
|
|
69
|
+
type: :runtime
|
|
68
70
|
version_requirements: *id004
|
|
69
71
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
72
|
+
name: rspec
|
|
71
73
|
prerelease: false
|
|
72
74
|
requirement: &id005 !ruby/object:Gem::Requirement
|
|
73
75
|
requirements:
|
|
@@ -79,7 +81,7 @@ dependencies:
|
|
|
79
81
|
type: :development
|
|
80
82
|
version_requirements: *id005
|
|
81
83
|
- !ruby/object:Gem::Dependency
|
|
82
|
-
name:
|
|
84
|
+
name: rcov
|
|
83
85
|
prerelease: false
|
|
84
86
|
requirement: &id006 !ruby/object:Gem::Requirement
|
|
85
87
|
requirements:
|
|
@@ -90,6 +92,18 @@ dependencies:
|
|
|
90
92
|
version: "0"
|
|
91
93
|
type: :development
|
|
92
94
|
version_requirements: *id006
|
|
95
|
+
- !ruby/object:Gem::Dependency
|
|
96
|
+
name: fakeweb
|
|
97
|
+
prerelease: false
|
|
98
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
segments:
|
|
103
|
+
- 0
|
|
104
|
+
version: "0"
|
|
105
|
+
type: :development
|
|
106
|
+
version_requirements: *id007
|
|
93
107
|
description: A Ruby wrapper for Facebook Graph API
|
|
94
108
|
email: nov@matake.jp
|
|
95
109
|
executables: []
|
|
@@ -111,6 +125,8 @@ files:
|
|
|
111
125
|
- fb_graph.gemspec
|
|
112
126
|
- lib/fb_graph.rb
|
|
113
127
|
- lib/fb_graph/album.rb
|
|
128
|
+
- lib/fb_graph/auth.rb
|
|
129
|
+
- lib/fb_graph/auth/cookie.rb
|
|
114
130
|
- lib/fb_graph/collection.rb
|
|
115
131
|
- lib/fb_graph/comment.rb
|
|
116
132
|
- lib/fb_graph/comparison.rb
|