fb_rails 1.1.0 → 1.1.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/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
|