fb_rails 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +17 -2
- data/lib/fb_rails/config.rb +2 -1
- data/lib/fb_rails/graph.rb +16 -3
- data/lib/fb_rails/test_helper.rb +10 -0
- data/test/config_test.rb +4 -0
- data/test/graph_test.rb +10 -0
- data/test/log_subscriber_test.rb +1 -1
- data/test/test_helper.rb +3 -1
- metadata +5 -7
data/README.rdoc
CHANGED
@@ -18,8 +18,7 @@ or
|
|
18
18
|
config.facebook.app_id = 'my_app_id'
|
19
19
|
config.facebook.secret = 'my_app_secret'
|
20
20
|
|
21
|
-
|
22
|
-
FBML and the Facebook Javascript API are for. Here's an example:
|
21
|
+
Include facebook Javascript and a login button:
|
23
22
|
|
24
23
|
<%= include_facebook_javascript %>
|
25
24
|
<%= fbml 'login-button' %>
|
@@ -82,6 +81,22 @@ One thing I like to do for new Facebook users is store them in a before filter:
|
|
82
81
|
end
|
83
82
|
|
84
83
|
|
84
|
+
== Timeouts
|
85
|
+
|
86
|
+
Calls to the Graph API can timeout. If this occurs, an FbRails::TimeoutError occurs.
|
87
|
+
Your application can rescue from these:
|
88
|
+
|
89
|
+
begin
|
90
|
+
fb.get 'me'
|
91
|
+
rescue FbRails::TimeoutError => e
|
92
|
+
...
|
93
|
+
end
|
94
|
+
|
95
|
+
The timeout defaults to 60 seconds. This can be configured:
|
96
|
+
|
97
|
+
config.timeout = 10
|
98
|
+
|
99
|
+
|
85
100
|
== Testing
|
86
101
|
|
87
102
|
Facebook requests can be mocked, so that your tests do not require real HTTP
|
data/lib/fb_rails/config.rb
CHANGED
data/lib/fb_rails/graph.rb
CHANGED
@@ -4,6 +4,13 @@ require 'uri'
|
|
4
4
|
require 'fb_rails/log_subscriber'
|
5
5
|
|
6
6
|
module FbRails
|
7
|
+
class TimeoutError < StandardError
|
8
|
+
def initialize(message)
|
9
|
+
@message = message
|
10
|
+
end
|
11
|
+
def to_s; @message ;end
|
12
|
+
end
|
13
|
+
|
7
14
|
class Graph
|
8
15
|
class << self
|
9
16
|
def facebook_uri
|
@@ -11,27 +18,33 @@ module FbRails
|
|
11
18
|
end
|
12
19
|
|
13
20
|
def get(path, params = {})
|
14
|
-
|
21
|
+
json_request(:get, "#{path}?#{params.to_param}")
|
15
22
|
end
|
16
23
|
|
17
24
|
def post(path, params = {})
|
18
|
-
|
25
|
+
json_request(:post, path, params.to_param)
|
19
26
|
end
|
20
27
|
|
21
28
|
private
|
22
29
|
def request(http_verb, path, *arguments)
|
23
|
-
|
30
|
+
ActiveSupport::Notifications.instrument('request.fb_rails') do |payload|
|
24
31
|
payload[:http_verb] = http_verb
|
25
32
|
payload[:request_uri] = path
|
26
33
|
http.send(http_verb, path, *arguments)
|
27
34
|
end
|
35
|
+
rescue Timeout::Error => e
|
36
|
+
raise TimeoutError.new(e.message)
|
37
|
+
end
|
28
38
|
|
39
|
+
def json_request(http_verb, path, *arguments)
|
40
|
+
response = request(http_verb, path, *arguments)
|
29
41
|
ActiveSupport::JSON.decode(response.body)
|
30
42
|
end
|
31
43
|
|
32
44
|
def http
|
33
45
|
result = Net::HTTP.new(facebook_uri.host, facebook_uri.port)
|
34
46
|
configure_https(result)
|
47
|
+
result.timeout = FbRails::Config.timeout
|
35
48
|
result
|
36
49
|
end
|
37
50
|
|
data/lib/fb_rails/test_helper.rb
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
module FbRails
|
2
2
|
module TestHelper
|
3
|
+
# Creates a hash representation of the facebook cookie.
|
4
|
+
# To use this in tests, you might do the following:
|
5
|
+
#
|
6
|
+
# class MyControllerTest < ActionController::TestCase
|
7
|
+
# test 'request that requires authentication' do
|
8
|
+
# @request.cookies.merge! fb_cookie
|
9
|
+
# get :protected_action
|
10
|
+
# end
|
11
|
+
# end
|
12
|
+
#
|
3
13
|
def fb_cookie(uid = 42, access_token = 'abc')
|
4
14
|
value = FbRails::Cookie.encode({uid: uid, access_token: access_token}, FbRails::Config.secret)
|
5
15
|
{FbRails::Connect.cookie_name => value}
|
data/test/config_test.rb
CHANGED
data/test/graph_test.rb
CHANGED
@@ -4,4 +4,14 @@ class FbRails::GraphTest < ActiveSupport::TestCase
|
|
4
4
|
test 'facebook_uri' do
|
5
5
|
assert_equal 'https', FbRails::Graph.facebook_uri.scheme
|
6
6
|
end
|
7
|
+
|
8
|
+
test 'rescue timout error' do
|
9
|
+
http = mock
|
10
|
+
http.stubs(:get).raises(Timeout::Error)
|
11
|
+
FbRails::Graph.expects(:http).returns(http)
|
12
|
+
|
13
|
+
assert_raise FbRails::TimeoutError do
|
14
|
+
FbRails::Graph.get 'foo'
|
15
|
+
end
|
16
|
+
end
|
7
17
|
end
|
data/test/log_subscriber_test.rb
CHANGED
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fb_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
13
|
-
default_executable:
|
12
|
+
date: 2011-09-19 00:00:00.000000000Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: rails
|
17
|
-
requirement: &
|
16
|
+
requirement: &70219700445320 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ! '>='
|
@@ -22,7 +21,7 @@ dependencies:
|
|
22
21
|
version: 3.0.0
|
23
22
|
type: :development
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *70219700445320
|
26
25
|
description: A Rails 3 gem for the latest facebook API
|
27
26
|
email: developer@matthewhiggins.com
|
28
27
|
executables: []
|
@@ -58,7 +57,6 @@ files:
|
|
58
57
|
- test/sample/test_controller.rb
|
59
58
|
- test/sample/user.rb
|
60
59
|
- test/test_helper.rb
|
61
|
-
has_rdoc: true
|
62
60
|
homepage: http://github.com/matthuhiggins/fb_rails
|
63
61
|
licenses: []
|
64
62
|
post_install_message:
|
@@ -79,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
77
|
version: 1.3.5
|
80
78
|
requirements: []
|
81
79
|
rubyforge_project:
|
82
|
-
rubygems_version: 1.
|
80
|
+
rubygems_version: 1.8.10
|
83
81
|
signing_key:
|
84
82
|
specification_version: 3
|
85
83
|
summary: Facebook on Rails
|