facebook_rails 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,8 +8,8 @@ module FacebookRailsHelper
8
8
  '</script>'
9
9
  end
10
10
 
11
- def facebook_initialization one_time_resize = false, app_id = FACEBOOK['app_id'], user_f8id = current_user_f8id
12
- resize = %{
11
+ def facebook_initialization resize = :auto, app_id = FACEBOOK['app_id'], user_f8id = current_user_f8id
12
+ onload_resize = %{
13
13
  var domLoaded = false;
14
14
  var facebookLoaded = false;
15
15
  var pageLoaded = false;
@@ -66,15 +66,16 @@ module FacebookRailsHelper
66
66
 
67
67
  %{
68
68
  <div id="fb-root"></div>
69
- <script>
70
- #{ resize if one_time_resize }
69
+ <script type="text/javascript">
70
+ #{ onload_resize if resize == :onload }
71
71
  window.fbAsyncInit = function() {
72
72
  FB.init({ appId: '#{ app_id }',
73
73
  status: true,
74
74
  cookie: true,
75
75
  xfbml: true });
76
76
  $(document).trigger('facebook_init');
77
- #{ one_time_resize ? 'facebookLoaded = true; pageLoad();' : 'FB.Canvas.setAutoGrow();' }
77
+ #{ 'facebookLoaded = true; pageLoad();' if resize == :onload }
78
+ #{ 'FB.Canvas.setAutoGrow();' if resize == :auto }
78
79
  #{ login_status }
79
80
  };
80
81
 
@@ -33,7 +33,7 @@ module FacebookRails
33
33
  end
34
34
 
35
35
  initializer "facebook_rails.facebook_post_patch" do
36
- ::Rails::Rack::Logger.class_eval do
36
+ Rails::Rack::Logger.class_eval do
37
37
  def call_with_post_override(env)
38
38
  if env["REQUEST_METHOD"]=="POST" and ((env["HTTP_REFERER"] and env["HTTP_REFERER"].to_s =~ /:\/\/[^\/]*facebook.com/) or
39
39
  (env["HTTP_ORIGIN"] and env["HTTP_ORIGIN"].to_s =~ /:\/\/[^\/]*facebook.com/))
@@ -0,0 +1,56 @@
1
+ #Additional security to be sure to never, ever run in production ... ever
2
+ if Rails.env != 'production'
3
+
4
+ #require 'koala_rails.rb'
5
+
6
+ class FacebookApiMock
7
+
8
+ def initialize(open_graph_data)
9
+ @open_graph_data = open_graph_data
10
+ end
11
+
12
+ def get_object(object_id, options = {})
13
+ @open_graph_data[:objects][object_id]
14
+ end
15
+
16
+ def get_connections(object_id, connection_name, options = {})
17
+ @open_graph_data[:connections][object_id][connection_name]
18
+ end
19
+
20
+ end
21
+
22
+ FacebookRailsController.module_eval do
23
+
24
+ def use_as_f8user(name)
25
+ if name.nil?
26
+ @test_user_data = nil
27
+ else
28
+ @test_user_data = YAML.load_file(Rails.root.join("spec/f8_user_mocks/#{name}.yml"))
29
+ end
30
+ end
31
+
32
+ def facebook_api
33
+ @facebook_api ||= FacebookApiMock.new(@test_user_data)
34
+ end
35
+
36
+ def authenticated_by_facebook?
37
+ !@test_user_data.nil?
38
+ end
39
+
40
+ #Will only try to collect facebook credentials but it will let the user in even there aren't any
41
+ def try_facebook_authentication
42
+ return true
43
+ end
44
+
45
+ #Will force user to authorize the application to access the current url
46
+ def ensure_authenticated_to_facebook
47
+ if @test_user_data.nil?
48
+ raise "Expected authorized facebook user but none was set, set one in spec using controller.use_as_f8user(name)!"
49
+ else
50
+ return true
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ end
@@ -1,3 +1,3 @@
1
1
  module FacebookRails
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -8,4 +8,12 @@ class FacebookRailsGenerator < Rails::Generators::Base
8
8
  def copy_configuration
9
9
  template 'facebook.yml', 'config/facebook.yml'
10
10
  end
11
+
12
+ def copy_spec_files
13
+ directory 'f8_user_mocks', 'spec/f8_user_mocks'
14
+ end
15
+
16
+ def insert_spec_helper
17
+ insert_into_file "spec/spec_helper.rb", "require 'facebook_rails/test'\n", :after => "require 'rspec/rails'\n"
18
+ end
11
19
  end
@@ -0,0 +1,13 @@
1
+
2
+ You must create a yml file with users facebook data.
3
+
4
+ To do that go to Facebook Graph API Explorer (https://developers.facebook.com/tools/explorer/) and grab
5
+ an access token with all the necessary permissions.
6
+
7
+ After that run rake facebook_rails:mock_user name=*NAME OF USER* token=*ACCESS TOKEN YOU JUST OBTAINED*
8
+
9
+ That yml mock data can be used for testing:
10
+
11
+ Place this call in your test before invoking the controller:
12
+
13
+ controller.use_as_f8user "*NAME OF USER*"
@@ -0,0 +1,41 @@
1
+ ---
2
+ :objects:
3
+ me:
4
+ id: '1684464858'
5
+ name: Probni Drap
6
+ first_name: Probni
7
+ last_name: Drap
8
+ link: http://www.facebook.com/profile.php?id=1684464858
9
+ birthday: 03/15/1980
10
+ timezone: 2
11
+ locale: hr_HR
12
+ verified: true
13
+ updated_time: '2011-06-17T08:32:57+0000'
14
+ :connections:
15
+ me:
16
+ friends:
17
+ - name: Radan Skoric
18
+ id: '503642044'
19
+ - name: Davor Runje
20
+ id: '510969565'
21
+ - name: Ded Sirijus
22
+ id: '517054106'
23
+ - name: Josipa BlackNinja Račić
24
+ id: '628679728'
25
+ - name: Danijel Milišić
26
+ id: '694929176'
27
+ - name: Tomislav Gudlek
28
+ id: '756277172'
29
+ - name: Ivan Rukavina
30
+ id: '774777677'
31
+ - name: Lovro Zmak
32
+ id: '1075643189'
33
+ - name: Joško Oršulić
34
+ id: '1094436843'
35
+ - name: Josip Vujcic
36
+ id: '1393590137'
37
+ - name: Dumica Dumminigi
38
+ id: '1531090875'
39
+ - name: BlackNinja Inkognito
40
+ id: '100001056206200'
41
+