mmangino-facebooker 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -37,6 +37,8 @@ generators/facebook_scaffold/templates/view_new.fbml.erb
37
37
  generators/facebook_scaffold/templates/view_new.html.erb
38
38
  generators/facebook_scaffold/templates/view_show.fbml.erb
39
39
  generators/facebook_scaffold/templates/view_show.html.erb
40
+ generators/xd_receiver/xd_receiver_generator.rb
41
+ generators/xd_receiver/templates/xd_receiver.html
40
42
  init.rb
41
43
  install.rb
42
44
  lib/facebooker.rb
@@ -75,6 +77,7 @@ lib/facebooker/rails/facebook_request_fix.rb
75
77
  lib/facebooker/rails/facebook_session_handling.rb
76
78
  lib/facebooker/rails/facebook_url_rewriting.rb
77
79
  lib/facebooker/rails/helpers.rb
80
+ lib/facebooker/rails/helpers/fb_connect.rb
78
81
  lib/facebooker/rails/profile_publisher_extensions.rb
79
82
  lib/facebooker/rails/publisher.rb
80
83
  lib/facebooker/rails/routing.rb
@@ -0,0 +1,10 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" >
4
+ <head>
5
+ <title>Cross-Domain Receiver Page</title>
6
+ </head>
7
+ <body>
8
+ <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.debug.js" type="text/javascript"></script>
9
+ </body>
10
+ </html>
@@ -0,0 +1,9 @@
1
+ class XdReceiverGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ m.template "xd_receiver.html", "public/xd_receiver.html"
5
+ end
6
+ end
7
+
8
+
9
+ end
@@ -10,7 +10,7 @@ module Facebooker
10
10
  include Model
11
11
  attr_accessor :message, :time, :status_id
12
12
  end
13
- FIELDS = [:status, :political, :pic_small, :name, :quotes, :is_app_user, :tv, :profile_update_time, :meeting_sex, :hs_info, :timezone, :relationship_status, :hometown_location, :about_me, :wall_count, :significant_other_id, :pic_big, :music, :uid, :work_history, :sex, :religion, :notes_count, :activities, :pic_square, :movies, :has_added_app, :education_history, :birthday, :first_name, :meeting_for, :last_name, :interests, :current_location, :pic, :books, :affiliations, :locale, :profile_url]
13
+ FIELDS = [:status, :political, :pic_small, :name, :quotes, :is_app_user, :tv, :profile_update_time, :meeting_sex, :hs_info, :timezone, :relationship_status, :hometown_location, :about_me, :wall_count, :significant_other_id, :pic_big, :music, :uid, :work_history, :sex, :religion, :notes_count, :activities, :pic_square, :movies, :has_added_app, :education_history, :birthday, :first_name, :meeting_for, :last_name, :interests, :current_location, :pic, :books, :affiliations, :locale, :profile_url, :proxied_email]
14
14
  STANDARD_FIELDS = [:uid, :first_name, :last_name, :name, :timezone, :birthday, :sex, :affiliations, :locale, :profile_url]
15
15
  attr_accessor :id, :session
16
16
  populating_attr_accessor *FIELDS
@@ -23,8 +23,7 @@ module Facebooker
23
23
 
24
24
 
25
25
  def set_facebook_session
26
-
27
- returning session_set = session_already_secured? || secure_with_facebook_params! ||secure_with_token! do
26
+ returning session_set = session_already_secured? || secure_with_facebook_params! || secure_with_cookies! || secure_with_token! do
28
27
  if session_set
29
28
  capture_facebook_friends_if_available!
30
29
  Session.current = facebook_session
@@ -72,7 +71,28 @@ module Facebooker
72
71
  !session[:facebook_session].blank? && (params[:fb_sig_session_key].blank? || session[:facebook_session].session_key == facebook_params[:session_key])
73
72
  end
74
73
  end
75
-
74
+
75
+ def secure_with_cookies!
76
+ api_key = ENV['FACEBOOK_API_KEY']
77
+ prefix = api_key+"_"
78
+ parsed = {}
79
+
80
+ #find all str s.t. !cookies[key_str].nil, set param[str] = cookies[key_str]
81
+ cookies.keys.select{|k| k[0, prefix.size] == prefix}.each{ |k|
82
+ parsed[k[prefix.size,k.size]] = cookies[k]
83
+ }
84
+
85
+ #returning gracefully if the cookies aren't set or have expired
86
+ return unless parsed['session_key'] && parsed['user'] && parsed['expires'] && parsed['ss']
87
+ return unless Time.at(parsed['expires'].to_f) > Time.now
88
+
89
+ #if we have the unexpired cookies, we'll throw an exception if the sig doesn't verify
90
+ verify_signature(parsed,cookies[api_key])
91
+
92
+ @facebook_session = new_facebook_session
93
+ @facebook_session.secure_with!(parsed['session_key'],parsed['user'],parsed['expires'],parsed['ss'])
94
+ end
95
+
76
96
  def secure_with_token!
77
97
  if params['auth_token']
78
98
  @facebook_session = new_facebook_session
@@ -142,7 +162,7 @@ module Facebooker
142
162
  raw_string = facebook_sig_params.map{ |*args| args.join('=') }.sort.join
143
163
  actual_sig = Digest::MD5.hexdigest([raw_string, Facebooker::Session.secret_key].join)
144
164
  raise Facebooker::Session::IncorrectSignature if actual_sig != expected_signature
145
- raise Facebooker::Session::SignatureTooOld if Time.at(facebook_sig_params['time'].to_f) < earliest_valid_session
165
+ raise Facebooker::Session::SignatureTooOld if facebook_sig_params['time'] && Time.at(facebook_sig_params['time'].to_f) < earliest_valid_session
146
166
  true
147
167
  end
148
168
 
@@ -0,0 +1,34 @@
1
+ module Facebooker
2
+ module Rails
3
+ module Helpers
4
+ module FbConnect
5
+
6
+ def fb_connect_javascript_tag
7
+ javascript_include_tag "http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"
8
+ end
9
+
10
+ def init_fb_connect(*required_features)
11
+ init_string = "FB.Facebook.init('#{Facebooker.api_key}','/xd_receiver.html');"
12
+ unless required_features.blank?
13
+ init_string = <<-FBML
14
+ Element.observe(window,'load', function() {
15
+ FB_RequireFeatures(#{required_features.to_json}, function() {
16
+ #{init_string}
17
+ });
18
+ });
19
+ FBML
20
+ end
21
+ javascript_tag init_string
22
+ end
23
+
24
+ def fb_login_button(callback=nil)
25
+ content_tag("fb:login-button",nil,(callback.nil? ? {} : {:onlogin=>callback}))
26
+ end
27
+
28
+ def fb_unconnected_friends_count
29
+ content_tag "fb:unconnected-friends-count",nil
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -8,6 +8,7 @@ module Facebooker
8
8
  #
9
9
  module Helpers
10
10
 
11
+ include Facebooker::Rails::Helpers::FbConnect
11
12
 
12
13
  # Create an fb:dialog
13
14
  # id must be a unique name e.g. "my_dialog"
@@ -196,7 +197,7 @@ module Facebooker
196
197
  options.transform_keys!(FB_NAME_OPTION_KEYS_TO_TRANSFORM)
197
198
  options.assert_valid_keys(FB_NAME_VALID_OPTION_KEYS)
198
199
  options.merge!(:uid => cast_to_facebook_id(user))
199
- tag("fb:name", stringify_vals(options))
200
+ content_tag("fb:name",nil, stringify_vals(options))
200
201
  end
201
202
 
202
203
  FB_NAME_OPTION_KEYS_TO_TRANSFORM = {:first_name_only => :firstnameonly,
@@ -217,7 +218,7 @@ module Facebooker
217
218
  options.transform_keys!(FB_PRONOUN_OPTION_KEYS_TO_TRANSFORM)
218
219
  options.assert_valid_keys(FB_PRONOUN_VALID_OPTION_KEYS)
219
220
  options.merge!(:uid => cast_to_facebook_id(user))
220
- tag("fb:pronoun", stringify_vals(options))
221
+ content_tag("fb:pronoun",nil, stringify_vals(options))
221
222
  end
222
223
 
223
224
  FB_PRONOUN_OPTION_KEYS_TO_TRANSFORM = {:use_you => :useyou, :use_they => :usethey}
@@ -259,7 +260,7 @@ module Facebooker
259
260
  options = options.dup
260
261
  validate_fb_profile_pic_size(options)
261
262
  options.merge!(:uid => cast_to_facebook_id(user))
262
- tag("fb:profile-pic", stringify_vals(options))
263
+ content_tag("fb:profile-pic", nil,stringify_vals(options))
263
264
  end
264
265
 
265
266
  # Render an fb:photo tag.
@@ -271,7 +272,7 @@ module Facebooker
271
272
  options.merge!(:pid => cast_to_photo_id(photo))
272
273
  validate_fb_photo_size(options)
273
274
  validate_fb_photo_align_value(options)
274
- tag("fb:photo", stringify_vals(options))
275
+ content_tag("fb:photo",nil, stringify_vals(options))
275
276
  end
276
277
 
277
278
  FB_PHOTO_VALID_OPTION_KEYS = [:uid, :size, :align]
@@ -544,6 +545,32 @@ module Facebooker
544
545
  content_tag("fb:prompt-permission",message,args)
545
546
  end
546
547
 
548
+ def fb_eventlink(eid)
549
+ content_tag "fb:eventlink",nil,:eid=>eid
550
+ end
551
+
552
+ def fb_grouplink(gid)
553
+ content_tag "fb:grouplink",nil,:gid=>gid
554
+ end
555
+
556
+ def fb_user_status(user,linked=true)
557
+ content_tag "fb:user-status",nil,stringify_vals(:uid=>cast_to_facebook_id(user), :linked=>linked)
558
+ end
559
+
560
+ def fb_share_button(url)
561
+ content_tag "fb:share-button",nil,:class=>"url",:href=>url
562
+ end
563
+
564
+ def fb_serverfbml(options={},&proc)
565
+ inner = capture(&proc)
566
+ concat(content_tag("fb:serverfbml",inner,options),&proc.binding)
567
+ end
568
+
569
+ def fb_container(options={},&proc)
570
+ inner = capture(&proc)
571
+ concat(content_tag("fb:container",inner,options),&proc.binding)
572
+ end
573
+
547
574
  protected
548
575
 
549
576
  def cast_to_facebook_id(object)
@@ -6,6 +6,7 @@ require 'action_controller/test_process'
6
6
  require 'active_record'
7
7
  require File.dirname(__FILE__)+'/../init'
8
8
  require 'facebooker/rails/controller'
9
+ require 'facebooker/rails/helpers/fb_connect'
9
10
  require 'facebooker/rails/helpers'
10
11
  require 'facebooker/rails/publisher'
11
12
 
@@ -3,6 +3,7 @@ begin
3
3
  require 'action_controller'
4
4
  require 'action_controller/test_process'
5
5
  require 'facebooker/rails/controller'
6
+ require 'facebooker/rails/helpers/fb_connect'
6
7
  require 'facebooker/rails/helpers'
7
8
  require 'facebooker/rails/facebook_form_builder'
8
9
  require File.dirname(__FILE__)+'/../init'
@@ -363,6 +364,32 @@ class RailsIntegrationTest < Test::Unit::TestCase
363
364
  get :index, modified_params
364
365
  end
365
366
 
367
+ def test_session_secured_with_auth_token_if_cookies_expired
368
+ auth_token = 'ohaiauthtokenhere111'
369
+ modified_params = example_rails_params_including_fb
370
+ modified_params.delete('fb_sig_session_key')
371
+ modified_params['auth_token'] = auth_token
372
+ session_mock = flexmock(session = Facebooker::Session.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY']))
373
+ session_params = { 'session_key' => '123', 'uid' => '321' }
374
+ session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token).once.and_return(session_params).ordered
375
+ flexmock(@controller).should_receive(:new_facebook_session).once.and_return(session).ordered
376
+ expired_cookie_hash_for_auth.each {|k,v| @request.cookies[ENV['FACEBOOK_API_KEY']+k] = CGI::Cookie.new(ENV['FACEBOOK_API_KEY']+k,v)}
377
+ get :index, modified_params
378
+ assert_equal(321, @controller.facebook_session.user.id)
379
+ end
380
+
381
+ def test_session_can_be_secured_with_cookies
382
+ cookie_hash_for_auth.each {|k,v| @request.cookies[ENV['FACEBOOK_API_KEY']+k] = CGI::Cookie.new(ENV['FACEBOOK_API_KEY']+k,v)}
383
+ get :index, example_rails_params_for_fb_connect
384
+ assert_equal(77777, @controller.facebook_session.user.id)
385
+ end
386
+
387
+ def test_session_does_NOT_secure_with_expired_cookies
388
+ expired_cookie_hash_for_auth.each {|k,v| @request.cookies[ENV['FACEBOOK_API_KEY']+k] = CGI::Cookie.new(ENV['FACEBOOK_API_KEY']+k,v)}
389
+ get :index, example_rails_params_for_fb_connect
390
+ assert_nil(@controller.facebook_session)
391
+ end
392
+
366
393
  def test_user_friends_can_be_populated_from_facebook_params_if_available
367
394
  get :index, example_rails_params_including_fb
368
395
  assert_not_nil(friends = @controller.facebook_session.user.friends)
@@ -436,6 +463,18 @@ class RailsIntegrationTest < Test::Unit::TestCase
436
463
  end
437
464
 
438
465
  private
466
+ def example_rails_params_for_fb_connect
467
+ {"action"=>"index", "controller"=>"controller_which_requires_facebook_authentication"}
468
+ end
469
+
470
+ def expired_cookie_hash_for_auth
471
+ {"_ss" => "not_used", "_session_key"=> "whatever", "_user"=>"77777", "_expires"=>"#{1.day.ago.to_i}"}
472
+ end
473
+
474
+ def cookie_hash_for_auth
475
+ {"_ss" => "not_used", "_session_key"=> "whatever", "_user"=>"77777", "_expires"=>"#{1.day.from_now.to_i}"}
476
+ end
477
+
439
478
  def example_rails_params_including_fb_for_user_not_logged_into_application
440
479
  {"fb_sig_time"=>"1186588275.5988", "fb_sig"=>"7371a6400329b229f800a5ecafe03b0a", "action"=>"index", "fb_sig_in_canvas"=>"1", "controller"=>"controller_which_requires_facebook_authentication", "fb_sig_added"=>"0", "fb_sig_api_key"=>"b6c9c857ac543ca806f4d3187cd05e09"}
441
480
  end
@@ -490,6 +529,7 @@ class RailsHelperTest < Test::Unit::TestCase
490
529
  include ActionView::Helpers::CaptureHelper
491
530
  include ActionView::Helpers::TagHelper
492
531
  include ActionView::Helpers::AssetTagHelper
532
+ include ActionView::Helpers::JavaScriptHelper
493
533
  include Facebooker::Rails::Helpers
494
534
  attr_accessor :flash, :output_buffer
495
535
  def initialize
@@ -524,11 +564,11 @@ class RailsHelperTest < Test::Unit::TestCase
524
564
  end
525
565
 
526
566
  def test_fb_profile_pic
527
- assert_equal "<fb:profile-pic uid=\"1234\" />", @h.fb_profile_pic("1234")
567
+ assert_equal "<fb:profile-pic uid=\"1234\"></fb:profile-pic>", @h.fb_profile_pic("1234")
528
568
  end
529
569
 
530
570
  def test_fb_profile_pic_with_valid_size
531
- assert_equal "<fb:profile-pic size=\"small\" uid=\"1234\" />", @h.fb_profile_pic("1234", :size => :small)
571
+ assert_equal "<fb:profile-pic size=\"small\" uid=\"1234\"></fb:profile-pic>", @h.fb_profile_pic("1234", :size => :small)
532
572
  end
533
573
 
534
574
  def test_fb_profile_pic_with_invalid_size
@@ -536,12 +576,12 @@ class RailsHelperTest < Test::Unit::TestCase
536
576
  end
537
577
 
538
578
  def test_fb_photo
539
- assert_equal "<fb:photo pid=\"1234\" />",@h.fb_photo("1234")
579
+ assert_equal "<fb:photo pid=\"1234\"></fb:photo>",@h.fb_photo("1234")
540
580
  end
541
581
 
542
582
  def test_fb_photo_with_object_responding_to_photo_id
543
583
  photo = flexmock("photo", :photo_id => "5678")
544
- assert_equal "<fb:photo pid=\"5678\" />", @h.fb_photo(photo)
584
+ assert_equal "<fb:photo pid=\"5678\"></fb:photo>", @h.fb_photo(photo)
545
585
  end
546
586
 
547
587
  def test_fb_photo_with_invalid_size
@@ -557,14 +597,14 @@ class RailsHelperTest < Test::Unit::TestCase
557
597
  end
558
598
 
559
599
  def test_fb_photo_with_valid_align_value
560
- assert_equal "<fb:photo align=\"right\" pid=\"1234\" />",@h.fb_photo("1234", :align => :right)
600
+ assert_equal "<fb:photo align=\"right\" pid=\"1234\"></fb:photo>",@h.fb_photo("1234", :align => :right)
561
601
  end
562
602
 
563
603
  def test_fb_photo_with_class
564
- assert_equal "<fb:photo class=\"picky\" pid=\"1234\" />",@h.fb_photo("1234", :class => :picky)
604
+ assert_equal "<fb:photo class=\"picky\" pid=\"1234\"></fb:photo>",@h.fb_photo("1234", :class => :picky)
565
605
  end
566
606
  def test_fb_photo_with_style
567
- assert_equal "<fb:photo pid=\"1234\" style=\"some=css;put=here;\" />",@h.fb_photo("1234", :style => "some=css;put=here;")
607
+ assert_equal "<fb:photo pid=\"1234\" style=\"some=css;put=here;\"></fb:photo>",@h.fb_photo("1234", :style => "some=css;put=here;")
568
608
  end
569
609
 
570
610
  def test_fb_prompt_permission_valid_no_callback
@@ -593,16 +633,16 @@ class RailsHelperTest < Test::Unit::TestCase
593
633
  end
594
634
 
595
635
  def test_fb_name
596
- assert_equal "<fb:name uid=\"1234\" />",@h.fb_name("1234")
636
+ assert_equal "<fb:name uid=\"1234\"></fb:name>",@h.fb_name("1234")
597
637
  end
598
638
 
599
639
  def test_fb_name_with_transformed_key
600
- assert_equal "<fb:name uid=\"1234\" useyou=\"true\" />", @h.fb_name(1234, :use_you => true)
640
+ assert_equal "<fb:name uid=\"1234\" useyou=\"true\"></fb:name>", @h.fb_name(1234, :use_you => true)
601
641
  end
602
642
 
603
643
  def test_fb_name_with_user_responding_to_facebook_id
604
644
  user = flexmock("user", :facebook_id => "5678")
605
- assert_equal "<fb:name uid=\"5678\" />", @h.fb_name(user)
645
+ assert_equal "<fb:name uid=\"5678\"></fb:name>", @h.fb_name(user)
606
646
  end
607
647
 
608
648
  def test_fb_name_with_invalid_key
@@ -698,16 +738,16 @@ class RailsHelperTest < Test::Unit::TestCase
698
738
  end
699
739
 
700
740
  def test_fb_pronoun
701
- assert_equal "<fb:pronoun uid=\"1234\" />", @h.fb_pronoun(1234)
741
+ assert_equal "<fb:pronoun uid=\"1234\"></fb:pronoun>", @h.fb_pronoun(1234)
702
742
  end
703
743
 
704
744
  def test_fb_pronoun_with_transformed_key
705
- assert_equal "<fb:pronoun uid=\"1234\" usethey=\"true\" />", @h.fb_pronoun(1234, :use_they => true)
745
+ assert_equal "<fb:pronoun uid=\"1234\" usethey=\"true\"></fb:pronoun>", @h.fb_pronoun(1234, :use_they => true)
706
746
  end
707
747
 
708
748
  def test_fb_pronoun_with_user_responding_to_facebook_id
709
749
  user = flexmock("user", :facebook_id => "5678")
710
- assert_equal "<fb:pronoun uid=\"5678\" />", @h.fb_pronoun(user)
750
+ assert_equal "<fb:pronoun uid=\"5678\"></fb:pronoun>", @h.fb_pronoun(user)
711
751
  end
712
752
 
713
753
  def test_fb_pronoun_with_invalid_key
@@ -880,6 +920,58 @@ class RailsHelperTest < Test::Unit::TestCase
880
920
  end
881
921
  assert_equal "<fb:narrow>narrow profile content</fb:narrow>", @h.output_buffer
882
922
  end
923
+
924
+ def test_fb_login_button
925
+ assert_equal "<fb:login-button onlogin=\"somejs\"></fb:login-button>",@h.fb_login_button("somejs")
926
+ end
927
+
928
+ def test_init_fb_connect_no_features
929
+ assert ! @h.init_fb_connect.match(/XFBML/)
930
+ end
931
+
932
+ def test_init_fb_connect_with_features
933
+ assert @h.init_fb_connect("XFBML").match(/XFBML/)
934
+ end
935
+
936
+ def test_fb_connect_javascript_tag
937
+ assert_equal "<script src=\"http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php\" type=\"text/javascript\"></script>",
938
+ @h.fb_connect_javascript_tag
939
+ end
940
+
941
+ def test_fb_container
942
+ @h.expects(:capture).returns("Inner Stuff")
943
+ @h.fb_container(:condition=>"somejs") do
944
+ end
945
+ assert_equal "<fb:container condition=\"somejs\">Inner Stuff</fb:container>",@h.output_buffer
946
+ end
947
+
948
+ def test_fb_eventlink
949
+ assert_equal '<fb:eventlink eid="21150032416"></fb:eventlink>',@h.fb_eventlink("21150032416")
950
+ end
951
+
952
+ def test_fb_grouplink
953
+ assert_equal '<fb:grouplink gid="2541896821"></fb:grouplink>',@h.fb_grouplink("2541896821")
954
+ end
955
+
956
+ def test_fb_serverfbml
957
+ @h.expects(:capture).returns("Inner Stuff")
958
+ @h.fb_serverfbml(:condition=>"somejs") do
959
+ end
960
+ assert_equal "<fb:serverfbml condition=\"somejs\">Inner Stuff</fb:serverfbml>",@h.output_buffer
961
+ end
962
+
963
+ def test_fb_share_button
964
+ assert_equal "<fb:share-button class=\"url\" href=\"http://www.elevatedrails.com\"></fb:share-button>",@h.fb_share_button("http://www.elevatedrails.com")
965
+ end
966
+
967
+ def test_fb_unconnected_friends_count_without_condition
968
+ assert_equal "<fb:unconnected-friends-count></fb:unconnected-friends-count>",@h.fb_unconnected_friends_count
969
+ end
970
+
971
+ def test_fb_user_status
972
+ user=flexmock("user", :facebook_id => "5678")
973
+ assert_equal '<fb:user-status linked="false" uid="5678"></fb:user-status>',@h.fb_user_status(user,false)
974
+ end
883
975
  end
884
976
  class TestModel
885
977
  attr_accessor :name,:facebook_id
@@ -958,6 +1050,8 @@ class RailsFacebookFormbuilderTest < Test::Unit::TestCase
958
1050
  def test_multi_friend_input
959
1051
  assert_equal "<fb:editor-custom label=\"Friends\"><fb:multi-friend-input></fb:multi-friend-input></fb:editor-custom>",@form_builder.multi_friend_input
960
1052
  end
1053
+
1054
+
961
1055
  end
962
1056
 
963
1057
  class RailsPrettyErrorsTest < Test::Unit::TestCase
@@ -1118,6 +1212,7 @@ class RailsUrlHelperExtensionsTest < Test::Unit::TestCase
1118
1212
  def test_link_to_if_with_false
1119
1213
  assert_equal @label, @u.link_to_if(false,@label,@url)
1120
1214
  end
1215
+
1121
1216
  end
1122
1217
 
1123
1218
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mmangino-facebooker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Fowler
@@ -79,6 +79,8 @@ files:
79
79
  - generators/facebook_scaffold/templates/view_new.html.erb
80
80
  - generators/facebook_scaffold/templates/view_show.fbml.erb
81
81
  - generators/facebook_scaffold/templates/view_show.html.erb
82
+ - generators/xd_receiver/xd_receiver_generator.rb
83
+ - generators/xd_receiver/templates/xd_receiver.html
82
84
  - init.rb
83
85
  - install.rb
84
86
  - lib/facebooker.rb
@@ -117,6 +119,7 @@ files:
117
119
  - lib/facebooker/rails/facebook_session_handling.rb
118
120
  - lib/facebooker/rails/facebook_url_rewriting.rb
119
121
  - lib/facebooker/rails/helpers.rb
122
+ - lib/facebooker/rails/helpers/fb_connect.rb
120
123
  - lib/facebooker/rails/profile_publisher_extensions.rb
121
124
  - lib/facebooker/rails/publisher.rb
122
125
  - lib/facebooker/rails/routing.rb