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 CHANGED
@@ -1,4 +1,7 @@
1
1
  = rest-graph changes history
2
2
 
3
+ == rest-graph 0.8.1 -- 2010-05-03
4
+ * added access_token parsing utility
5
+
3
6
  == rest-graph 0.8.0 -- 2010-05-03
4
7
  * release early, release often
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
@@ -17,6 +17,7 @@ Bones{
17
17
 
18
18
  depend_on 'rest-client'
19
19
  depend_on 'json', :development => true
20
+ depend_on 'rack', :development => true
20
21
 
21
22
  depend_on 'rr', :development => true
22
23
  depend_on 'webmock', :development => true
@@ -1,4 +1,4 @@
1
1
 
2
2
  class RestGraph
3
- VERSION = '0.8.0'
3
+ VERSION = '0.8.1'
4
4
  end
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]
@@ -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
- - 0
9
- version: 0.8.0
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: rr
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: *id003
75
+ version_requirements: *id004
62
76
  - !ruby/object:Gem::Dependency
63
77
  name: webmock
64
78
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::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: *id004
89
+ version_requirements: *id005
76
90
  - !ruby/object:Gem::Dependency
77
91
  name: bacon
78
92
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::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: *id005
103
+ version_requirements: *id006
90
104
  - !ruby/object:Gem::Dependency
91
105
  name: bones
92
106
  prerelease: false
93
- requirement: &id006 !ruby/object:Gem::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: *id006
117
+ version_requirements: *id007
104
118
  description: " super simple facebook open graph api client"
105
119
  email: godfat (XD) godfat.org
106
120
  executables: []