rest-graph 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +3 -0
- data/README +23 -1
- data/Rakefile +1 -0
- data/lib/rest-graph/version.rb +1 -1
- data/lib/rest-graph.rb +14 -0
- data/test/test_rest-graph.rb +20 -0
- metadata +24 -10
data/CHANGES
CHANGED
data/README
CHANGED
@@ -15,16 +15,38 @@ by Lin Jen-Shin (aka godfat-真常[http://godfat.org])
|
|
15
15
|
== SYNOPSIS:
|
16
16
|
|
17
17
|
require 'rest-graph'
|
18
|
-
rg = RestGraph.new(:access_token => '...'
|
18
|
+
rg = RestGraph.new(:access_token => '...',
|
19
|
+
:server => 'https://graph.facebook.com/,
|
20
|
+
:accept => 'text/javascript',
|
21
|
+
:lang => 'en-us', # this affect search
|
22
|
+
:auto_decode => true) # decode by json
|
19
23
|
rg.get('me')
|
20
24
|
rg.post('feed/me', :message => 'bread!')
|
21
25
|
|
26
|
+
# for rack
|
27
|
+
app_id = '\d+'
|
28
|
+
lambda{ |env|
|
29
|
+
rg = RestGraph.new(:access_token =>
|
30
|
+
RestGraph.parse_token_in_rack_env(env, app_id))
|
31
|
+
}
|
32
|
+
|
33
|
+
# for fully blown cookies hash
|
34
|
+
app_id = '123'
|
35
|
+
rg = RestGraph.new(:access_token =>
|
36
|
+
RestGraph.parse_token_in_cookies(cookies, app_id))
|
37
|
+
|
38
|
+
# for fully blown cookies hash
|
39
|
+
app_id = '456'
|
40
|
+
rg = RestGraph.new(:access_token =>
|
41
|
+
RestGraph.parse_token_in_fb_cookie(cookies["fbs_#{app_id}"]))
|
42
|
+
|
22
43
|
== REQUIREMENTS:
|
23
44
|
|
24
45
|
* tested with MRI 1.8.7 and 1.9.1
|
25
46
|
* gem install rest-client
|
26
47
|
* gem install json (optional)
|
27
48
|
* gem install json_pure (optional)
|
49
|
+
* gem install rack (optional, to parse access_token in HTTP_COOKIE)
|
28
50
|
|
29
51
|
== INSTALL:
|
30
52
|
|
data/Rakefile
CHANGED
data/lib/rest-graph/version.rb
CHANGED
data/lib/rest-graph.rb
CHANGED
@@ -4,6 +4,20 @@ require 'rest_client'
|
|
4
4
|
require 'cgi'
|
5
5
|
|
6
6
|
class RestGraph
|
7
|
+
autoload :Rack, 'rack'
|
8
|
+
def self.parse_token_in_rack_env env, app_id = '\d+'
|
9
|
+
env['HTTP_COOKIE'] =~ /fbs_#{app_id}="(.+?)"/ &&
|
10
|
+
Rack::Utils.parse_query($1)['access_token']
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.parse_token_in_cookies cookies, app_id
|
14
|
+
parse_token_in_fb_cookie(cookies["fbs_#{app_id}"])
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.parse_token_in_fb_cookie fb_cookie
|
18
|
+
fb_cookie && Rack::Utils.parse_query(fb_cookie[1..-2])['access_token']
|
19
|
+
end
|
20
|
+
|
7
21
|
attr_accessor :access_token, :server, :accept, :lang, :auto_decode
|
8
22
|
def initialize o = {}
|
9
23
|
self.access_token = o[:access_token]
|
data/test/test_rest-graph.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
|
2
2
|
require 'rubygems' if RUBY_VERSION < '1.9.0'
|
3
|
+
require 'rack' if RUBY_VERSION < '1.9.0' # autoload broken in 1.8?
|
3
4
|
require 'rest-graph'
|
4
5
|
|
5
6
|
require 'rr'
|
@@ -102,4 +103,23 @@ describe RestGraph do
|
|
102
103
|
|
103
104
|
RestGraph.new.delete('123').should == []
|
104
105
|
end
|
106
|
+
|
107
|
+
it 'would extract correct access_token' do
|
108
|
+
access_token = '1|2-5|f.'
|
109
|
+
app_id = '1829'
|
110
|
+
fbs = "\"access_token=#{CGI.escape(access_token)}&expires=0&" \
|
111
|
+
"secret=abc&session_key=def-456&sig=zzz&uid=3\""
|
112
|
+
http_cookie =
|
113
|
+
"__utma=123; __utmz=456.utmcsr=(d)|utmccn=(d)|utmcmd=(n); " \
|
114
|
+
"fbs_#{app_id}=#{fbs}"
|
115
|
+
|
116
|
+
RestGraph.parse_token_in_rack_env('HTTP_COOKIE' => http_cookie).
|
117
|
+
should == access_token
|
118
|
+
|
119
|
+
RestGraph.parse_token_in_cookies({"fbs_#{app_id}" => fbs}, app_id).
|
120
|
+
should == access_token
|
121
|
+
|
122
|
+
RestGraph.parse_token_in_fb_cookie(fbs).
|
123
|
+
should == access_token
|
124
|
+
end
|
105
125
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 8
|
8
|
-
-
|
9
|
-
version: 0.8.
|
8
|
+
- 1
|
9
|
+
version: 0.8.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "Lin Jen-Shin (aka godfat \xE7\x9C\x9F\xE5\xB8\xB8)"
|
@@ -46,9 +46,23 @@ dependencies:
|
|
46
46
|
type: :development
|
47
47
|
version_requirements: *id002
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
49
|
+
name: rack
|
50
50
|
prerelease: false
|
51
51
|
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 1
|
57
|
+
- 1
|
58
|
+
- 0
|
59
|
+
version: 1.1.0
|
60
|
+
type: :development
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rr
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
66
|
requirements:
|
53
67
|
- - ">="
|
54
68
|
- !ruby/object:Gem::Version
|
@@ -58,11 +72,11 @@ dependencies:
|
|
58
72
|
- 11
|
59
73
|
version: 0.10.11
|
60
74
|
type: :development
|
61
|
-
version_requirements: *
|
75
|
+
version_requirements: *id004
|
62
76
|
- !ruby/object:Gem::Dependency
|
63
77
|
name: webmock
|
64
78
|
prerelease: false
|
65
|
-
requirement: &
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
66
80
|
requirements:
|
67
81
|
- - ">="
|
68
82
|
- !ruby/object:Gem::Version
|
@@ -72,11 +86,11 @@ dependencies:
|
|
72
86
|
- 0
|
73
87
|
version: 1.1.0
|
74
88
|
type: :development
|
75
|
-
version_requirements: *
|
89
|
+
version_requirements: *id005
|
76
90
|
- !ruby/object:Gem::Dependency
|
77
91
|
name: bacon
|
78
92
|
prerelease: false
|
79
|
-
requirement: &
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
80
94
|
requirements:
|
81
95
|
- - ">="
|
82
96
|
- !ruby/object:Gem::Version
|
@@ -86,11 +100,11 @@ dependencies:
|
|
86
100
|
- 0
|
87
101
|
version: 1.1.0
|
88
102
|
type: :development
|
89
|
-
version_requirements: *
|
103
|
+
version_requirements: *id006
|
90
104
|
- !ruby/object:Gem::Dependency
|
91
105
|
name: bones
|
92
106
|
prerelease: false
|
93
|
-
requirement: &
|
107
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
94
108
|
requirements:
|
95
109
|
- - ">="
|
96
110
|
- !ruby/object:Gem::Version
|
@@ -100,7 +114,7 @@ dependencies:
|
|
100
114
|
- 1
|
101
115
|
version: 3.4.1
|
102
116
|
type: :development
|
103
|
-
version_requirements: *
|
117
|
+
version_requirements: *id007
|
104
118
|
description: " super simple facebook open graph api client"
|
105
119
|
email: godfat (XD) godfat.org
|
106
120
|
executables: []
|