rest-graph 1.4.2 → 1.4.3

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,5 +1,18 @@
1
1
  = rest-graph changes history
2
2
 
3
+ == rest-graph 1.4.3 -- 2010-08-06
4
+
5
+ * [RestGraph] Fixed a bug in RestGraph#fbs, which didn't join '&'.
6
+ Thanks, Andrew.
7
+
8
+ * [RailsUtil] Fixed a bug that wrongly rewrites request URI.
9
+ Previously it is processed by regular expressions,
10
+ now we're using URI.parse to handle this. Closed #4.
11
+ Thanks, Justin.
12
+
13
+ * [RailsUtil] Favor Request#fullpath over Request#request_uri,
14
+ which came from newer Rack and thus for Rails 3.
15
+
3
16
  == rest-graph 1.4.2 -- 2010-08-05
4
17
 
5
18
  * [RestGraph] Added RestGraph#fbs to generate fbs with correct sig,
@@ -9,7 +22,7 @@
9
22
  * [RailsUtil] Fixed a bug that write_session didn't parse because parse_fbs!
10
23
  reject the fbs due to missing sig.
11
24
  * [RailsUtil] Fixed a bug that in Rails 3, must call safe_html to prevent
12
- unintended HTML escaping.
25
+ unintended HTML escaping. Thanks, Justin.
13
26
 
14
27
  * Thanks a lot, Andrew.
15
28
 
data/README CHANGED
@@ -1,4 +1,4 @@
1
- = rest-graph 1.4.2
1
+ = rest-graph 1.4.3
2
2
  by Cardinal Blue ( http://cardinalblue.com )
3
3
 
4
4
  == LINKS:
data/README.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- = rest-graph 1.4.2
1
+ = rest-graph 1.4.3
2
2
  by Cardinal Blue ( http://cardinalblue.com )
3
3
 
4
4
  == LINKS:
@@ -1,3 +1,4 @@
1
+
1
2
  ENV["RAILS_ENV"] = "test"
2
3
  require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3
4
  require 'test_help'
@@ -0,0 +1,32 @@
1
+
2
+ require 'test_helper'
3
+ require 'rr'
4
+
5
+ class RailsUtilTest < ActiveSupport::TestCase
6
+ include RR::Adapters::TestUnit
7
+
8
+ def setup_mock url
9
+ mock(RestGraph::RailsUtil).rest_graph_in_canvas?{ false }
10
+ mock(RestGraph::RailsUtil).request{
11
+ mock(Object.new).url{ url }
12
+ }
13
+ end
14
+
15
+ def test_rest_graph_normalized_request_uri_0
16
+ setup_mock( 'http://test.com/?code=123&lang=en')
17
+ assert_equal('http://test.com/?lang=en',
18
+ RestGraph::RailsUtil.rest_graph_normalized_request_uri)
19
+ end
20
+
21
+ def test_rest_graph_normalized_request_uri_1
22
+ setup_mock( 'http://test.com/?lang=en&code=123')
23
+ assert_equal('http://test.com/?lang=en',
24
+ RestGraph::RailsUtil.rest_graph_normalized_request_uri)
25
+ end
26
+
27
+ def test_rest_graph_normalized_request_uri_2
28
+ setup_mock( 'http://test.com/?session=abc&lang=en&code=123')
29
+ assert_equal('http://test.com/?lang=en',
30
+ RestGraph::RailsUtil.rest_graph_normalized_request_uri)
31
+ end
32
+ end
@@ -237,13 +237,19 @@ module RestGraph::RailsUtil
237
237
  end
238
238
 
239
239
  def rest_graph_normalized_request_uri
240
- if rest_graph_in_canvas?
241
- "http://apps.facebook.com/" \
242
- "#{rest_graph_oget(:canvas)}#{request.request_uri}"
243
- else
244
- request.url
245
- end.sub(/[\&\?]session=[^\&]+/, '').
246
- sub(/[\&\?]code=[^\&]+/, '')
240
+ URI.parse(if rest_graph_in_canvas?
241
+ # rails 3 uses newer rack which has fullpath
242
+ "http://apps.facebook.com/#{rest_graph_oget(:canvas)}" +
243
+ (request.respond_to?(:fullpath) ?
244
+ request.fullpath : request.request_uri)
245
+ else
246
+ request.url
247
+ end).
248
+ tap{ |uri|
249
+ uri.query = uri.query.split('&').reject{ |q|
250
+ q =~ /^(code|session)\=/
251
+ }.join('&') if uri.query
252
+ }.to_s
247
253
  end
248
254
 
249
255
  def rest_graph_in_canvas?
@@ -1,4 +1,4 @@
1
1
 
2
2
  require 'rest-graph'
3
3
 
4
- RestGraph::VERSION = '1.4.2'
4
+ RestGraph::VERSION = '1.4.3'
data/lib/rest-graph.rb CHANGED
@@ -131,7 +131,7 @@ class RestGraph < RestGraphStruct
131
131
  end
132
132
 
133
133
  def fbs
134
- "#{fbs_without_sig(data)}&sig=#{calculate_sig(data)}"
134
+ "#{fbs_without_sig(data).join('&')}&sig=#{calculate_sig(data)}"
135
135
  end
136
136
 
137
137
  # facebook's new signed_request...
@@ -239,12 +239,11 @@ class RestGraph < RestGraphStruct
239
239
  end
240
240
 
241
241
  def calculate_sig cookies
242
- Digest::MD5.hexdigest(fbs_without_sig(cookies) + secret)
242
+ Digest::MD5.hexdigest(fbs_without_sig(cookies).join + secret)
243
243
  end
244
244
 
245
245
  def fbs_without_sig cookies
246
- cookies.reject{ |(k, v)| k == 'sig' }.sort.
247
- map{ |a| a.join('=') }.join
246
+ cookies.reject{ |(k, v)| k == 'sig' }.sort.map{ |a| a.join('=') }
248
247
  end
249
248
 
250
249
  def cache_key uri
data/test/test_parse.rb CHANGED
@@ -98,4 +98,12 @@ describe RestGraph do
98
98
  rg.parse_fbs!(rg.fbs.sub(/sig\=\w+/, 'sig=abc')).should == nil
99
99
  end
100
100
 
101
+ it 'could generate correct fbs with additional parameters' do
102
+ rg = RestGraph.new(:access_token => 'a', :secret => 'z')
103
+ rg.data['expires'] = '1234'
104
+ rg.parse_fbs!(rg.fbs) .should.kind_of?(Hash)
105
+ rg.data['access_token'] .should == 'a'
106
+ rg.data['expires'] .should == '1234'
107
+ end
108
+
101
109
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-graph
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 4
9
- - 2
10
- version: 1.4.2
9
+ - 3
10
+ version: 1.4.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Cardinal Blue
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-08-05 00:00:00 +08:00
19
+ date: 2010-08-06 00:00:00 +08:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -177,6 +177,7 @@ files:
177
177
  - example/rails/script/server
178
178
  - example/rails/test/functional/application_controller_test.rb
179
179
  - example/rails/test/test_helper.rb
180
+ - example/rails/test/unit/rails_util_test.rb
180
181
  - init.rb
181
182
  - lib/rest-graph.rb
182
183
  - lib/rest-graph/auto_load.rb