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 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: []