rest-graph 0.8.0 → 0.8.1
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/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: []
|