facebooker 1.0.58 → 1.0.59

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.
@@ -113,7 +113,9 @@ lib/facebooker/stream_post.rb
113
113
  lib/facebooker/version.rb
114
114
  lib/net/http_multipart_post.rb
115
115
  lib/rack/facebook.rb
116
+ lib/rack/facebook_session.rb
116
117
  lib/tasks/facebooker.rake
118
+ lib/tasks/facebooker.rb
117
119
  lib/tasks/tunnel.rake
118
120
  rails/init.rb
119
121
  setup.rb
@@ -142,5 +144,6 @@ test/fixtures/multipart_post_body_with_single_file.txt
142
144
  test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt
143
145
  test/net/http_multipart_post_test.rb
144
146
  test/rack/facebook_test.rb
147
+ test/rack/facebook_session_test.rb
145
148
  test/rails_test_helper.rb
146
149
  test/test_helper.rb
@@ -48,6 +48,12 @@ Facebooker can be installed as a Rails plugin by:
48
48
 
49
49
  If you don't have git, the plugin can be downloaded from http://github.com/mmangino/facebooker/tarball/master
50
50
 
51
+ === Using Gem in Rails
52
+
53
+ The rake task would not be added automatically, so to use it in rails you would have to add the following towards the end of your Rakefile:
54
+
55
+ require 'tasks/facebooker'
56
+
51
57
  Once the plugin is installed, you will need to configure your Facebook app in config/facebooker.yml.
52
58
 
53
59
  Your application users will need to have added the application in facebook to access all of facebooker's features. You enforce this by adding
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{facebooker}
5
- s.version = "1.0.58"
5
+ s.version = "1.0.59"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Chad Fowler", "Patrick Ewing", "Mike Mangino", "Shane Vitarana", "Corey Innis", "Mike Mangino"]
9
- s.date = %q{2009-12-11}
9
+ s.date = %q{2010-01-15}
10
10
  s.description = %q{Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://wiki.developers.facebook.com/index.php/API]. Its goals are:
11
11
 
12
12
  * Idiomatic Ruby
@@ -15,14 +15,14 @@ Gem::Specification.new do |s|
15
15
  * Well tested}
16
16
  s.email = ["chad@chadfowlwer.com", "", "", "", "", "mmangino@elevatedrails.com"]
17
17
  s.extra_rdoc_files = ["Manifest.txt", "CHANGELOG.rdoc", "COPYING.rdoc", "README.rdoc", "TODO.rdoc"]
18
- s.files = [".autotest", "CHANGELOG.rdoc", "COPYING.rdoc", "Manifest.txt", "README.rdoc", "Rakefile", "TODO.rdoc", "examples/desktop_login.rb", "facebooker.gemspec", "generators/facebook/facebook_generator.rb", "generators/facebook/templates/config/facebooker.yml", "generators/facebook/templates/public/javascripts/facebooker.js", "generators/facebook_controller/USAGE", "generators/facebook_controller/facebook_controller_generator.rb", "generators/facebook_controller/templates/controller.rb", "generators/facebook_controller/templates/functional_test.rb", "generators/facebook_controller/templates/helper.rb", "generators/facebook_controller/templates/view.fbml.erb", "generators/facebook_controller/templates/view.html.erb", "generators/facebook_publisher/facebook_publisher_generator.rb", "generators/facebook_publisher/templates/create_facebook_templates.rb", "generators/facebook_publisher/templates/publisher.rb", "generators/facebook_scaffold/USAGE", "generators/facebook_scaffold/facebook_scaffold_generator.rb", "generators/facebook_scaffold/templates/controller.rb", "generators/facebook_scaffold/templates/facebook_style.css", "generators/facebook_scaffold/templates/functional_test.rb", "generators/facebook_scaffold/templates/helper.rb", "generators/facebook_scaffold/templates/layout.fbml.erb", "generators/facebook_scaffold/templates/layout.html.erb", "generators/facebook_scaffold/templates/style.css", "generators/facebook_scaffold/templates/view_edit.fbml.erb", "generators/facebook_scaffold/templates/view_edit.html.erb", "generators/facebook_scaffold/templates/view_index.fbml.erb", "generators/facebook_scaffold/templates/view_index.html.erb", "generators/facebook_scaffold/templates/view_new.fbml.erb", "generators/facebook_scaffold/templates/view_new.html.erb", "generators/facebook_scaffold/templates/view_show.fbml.erb", "generators/facebook_scaffold/templates/view_show.html.erb", "generators/publisher/publisher_generator.rb", "generators/xd_receiver/templates/xd_receiver_ssl.html", "generators/xd_receiver/templates/xd_receiver.html", "generators/xd_receiver/xd_receiver_generator.rb", "init.rb", "install.rb", "lib/facebooker.rb", "lib/facebooker/adapters/adapter_base.rb", "lib/facebooker/adapters/bebo_adapter.rb", "lib/facebooker/adapters/facebook_adapter.rb", "lib/facebooker/attachment.rb", "lib/facebooker/admin.rb", "lib/facebooker/application.rb", "lib/facebooker/batch_request.rb", "lib/facebooker/data.rb", "lib/facebooker/feed.rb", "lib/facebooker/logging.rb", "lib/facebooker/mobile.rb", "lib/facebooker/mock/service.rb", "lib/facebooker/mock/session.rb", "lib/facebooker/model.rb", "lib/facebooker/models/affiliation.rb", "lib/facebooker/models/album.rb", "lib/facebooker/models/applicationproperties.rb", "lib/facebooker/models/applicationrestrictions.rb", "lib/facebooker/models/cookie.rb", "lib/facebooker/models/education_info.rb", "lib/facebooker/models/event.rb", "lib/facebooker/models/family_relative_info.rb", "lib/facebooker/models/friend_list.rb", "lib/facebooker/models/group.rb", "lib/facebooker/models/info_item.rb", "lib/facebooker/models/info_section.rb", "lib/facebooker/models/location.rb", "lib/facebooker/models/notifications.rb", "lib/facebooker/models/page.rb", "lib/facebooker/models/photo.rb", "lib/facebooker/models/tag.rb", "lib/facebooker/models/user.rb", "lib/facebooker/models/video.rb", "lib/facebooker/models/work_info.rb", "lib/facebooker/parser.rb", "lib/facebooker/rails/backwards_compatible_param_checks.rb", "lib/facebooker/rails/controller.rb", "lib/facebooker/rails/cucumber.rb", "lib/facebooker/rails/cucumber/world.rb", "lib/facebooker/rails/extensions/action_controller.rb", "lib/facebooker/rails/extensions/rack_setup.rb", "lib/facebooker/rails/extensions/routing.rb", "lib/facebooker/rails/facebook_form_builder.rb", "lib/facebooker/rails/facebook_pretty_errors.rb", "lib/facebooker/rails/facebook_request_fix.rb", "lib/facebooker/rails/facebook_request_fix_2-3.rb", "lib/facebooker/rails/facebook_session_handling.rb", "lib/facebooker/rails/facebook_url_helper.rb", "lib/facebooker/rails/facebook_url_rewriting.rb", "lib/facebooker/rails/helpers.rb", "lib/facebooker/rails/helpers/fb_connect.rb", "lib/facebooker/rails/integration_session.rb", "lib/facebooker/rails/profile_publisher_extensions.rb", "lib/facebooker/rails/publisher.rb", "lib/facebooker/rails/routing.rb", "lib/facebooker/rails/test_helpers.rb", "lib/facebooker/rails/utilities.rb", "lib/facebooker/server_cache.rb", "lib/facebooker/service.rb", "lib/facebooker/service/base_service.rb", "lib/facebooker/service/curl_service.rb", "lib/facebooker/service/net_http_service.rb", "lib/facebooker/service/typhoeus_service.rb", "lib/facebooker/service/typhoeus_multi_service.rb", "lib/facebooker/session.rb", "lib/facebooker/stream_post.rb", "lib/facebooker/version.rb", "lib/net/http_multipart_post.rb", "lib/rack/facebook.rb", "lib/tasks/facebooker.rake", "lib/tasks/tunnel.rake", "rails/init.rb", "setup.rb", "templates/layout.erb", "test/facebooker/adapters_test.rb", "test/facebooker/admin_test.rb", "test/facebooker/application_test.rb", "test/facebooker/attachment_test.rb", "test/facebooker/batch_request_test.rb", "test/facebooker/data_test.rb", "test/facebooker/logging_test.rb", "test/facebooker/mobile_test.rb", "test/facebooker/model_test.rb", "test/facebooker/models/event_test.rb", "test/facebooker/models/page_test.rb", "test/facebooker/models/photo_test.rb", "test/facebooker/models/user_test.rb", "test/facebooker/rails/publisher_test.rb", "test/facebooker/rails_integration_test.rb", "test/facebooker/rails/facebook_request_fix_2-3_test.rb", "test/facebooker/server_cache_test.rb", "test/facebooker/session_test.rb", "test/facebooker_test.rb", "test/fixtures/multipart_post_body_with_only_parameters.txt", "test/fixtures/multipart_post_body_with_single_file.txt", "test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt", "test/net/http_multipart_post_test.rb", "test/rack/facebook_test.rb", "test/rails_test_helper.rb", "test/test_helper.rb", "test/facebooker/rails/facebook_url_rewriting_test.rb", "test/facebooker/rails/integration_session_test.rb", "test/facebooker/service_test.rb"]
18
+ s.files = [".autotest", "CHANGELOG.rdoc", "COPYING.rdoc", "Manifest.txt", "README.rdoc", "Rakefile", "TODO.rdoc", "examples/desktop_login.rb", "facebooker.gemspec", "generators/facebook/facebook_generator.rb", "generators/facebook/templates/config/facebooker.yml", "generators/facebook/templates/public/javascripts/facebooker.js", "generators/facebook_controller/USAGE", "generators/facebook_controller/facebook_controller_generator.rb", "generators/facebook_controller/templates/controller.rb", "generators/facebook_controller/templates/functional_test.rb", "generators/facebook_controller/templates/helper.rb", "generators/facebook_controller/templates/view.fbml.erb", "generators/facebook_controller/templates/view.html.erb", "generators/facebook_publisher/facebook_publisher_generator.rb", "generators/facebook_publisher/templates/create_facebook_templates.rb", "generators/facebook_publisher/templates/publisher.rb", "generators/facebook_scaffold/USAGE", "generators/facebook_scaffold/facebook_scaffold_generator.rb", "generators/facebook_scaffold/templates/controller.rb", "generators/facebook_scaffold/templates/facebook_style.css", "generators/facebook_scaffold/templates/functional_test.rb", "generators/facebook_scaffold/templates/helper.rb", "generators/facebook_scaffold/templates/layout.fbml.erb", "generators/facebook_scaffold/templates/layout.html.erb", "generators/facebook_scaffold/templates/style.css", "generators/facebook_scaffold/templates/view_edit.fbml.erb", "generators/facebook_scaffold/templates/view_edit.html.erb", "generators/facebook_scaffold/templates/view_index.fbml.erb", "generators/facebook_scaffold/templates/view_index.html.erb", "generators/facebook_scaffold/templates/view_new.fbml.erb", "generators/facebook_scaffold/templates/view_new.html.erb", "generators/facebook_scaffold/templates/view_show.fbml.erb", "generators/facebook_scaffold/templates/view_show.html.erb", "generators/publisher/publisher_generator.rb", "generators/xd_receiver/templates/xd_receiver_ssl.html", "generators/xd_receiver/templates/xd_receiver.html", "generators/xd_receiver/xd_receiver_generator.rb", "init.rb", "install.rb", "lib/facebooker.rb", "lib/facebooker/adapters/adapter_base.rb", "lib/facebooker/adapters/bebo_adapter.rb", "lib/facebooker/adapters/facebook_adapter.rb", "lib/facebooker/attachment.rb", "lib/facebooker/admin.rb", "lib/facebooker/application.rb", "lib/facebooker/batch_request.rb", "lib/facebooker/data.rb", "lib/facebooker/feed.rb", "lib/facebooker/logging.rb", "lib/facebooker/mobile.rb", "lib/facebooker/mock/service.rb", "lib/facebooker/mock/session.rb", "lib/facebooker/model.rb", "lib/facebooker/models/affiliation.rb", "lib/facebooker/models/album.rb", "lib/facebooker/models/applicationproperties.rb", "lib/facebooker/models/applicationrestrictions.rb", "lib/facebooker/models/cookie.rb", "lib/facebooker/models/education_info.rb", "lib/facebooker/models/event.rb", "lib/facebooker/models/family_relative_info.rb", "lib/facebooker/models/friend_list.rb", "lib/facebooker/models/group.rb", "lib/facebooker/models/info_item.rb", "lib/facebooker/models/info_section.rb", "lib/facebooker/models/location.rb", "lib/facebooker/models/notifications.rb", "lib/facebooker/models/page.rb", "lib/facebooker/models/photo.rb", "lib/facebooker/models/tag.rb", "lib/facebooker/models/user.rb", "lib/facebooker/models/video.rb", "lib/facebooker/models/work_info.rb", "lib/facebooker/parser.rb", "lib/facebooker/rails/backwards_compatible_param_checks.rb", "lib/facebooker/rails/controller.rb", "lib/facebooker/rails/cucumber.rb", "lib/facebooker/rails/cucumber/world.rb", "lib/facebooker/rails/extensions/action_controller.rb", "lib/facebooker/rails/extensions/rack_setup.rb", "lib/facebooker/rails/extensions/routing.rb", "lib/facebooker/rails/facebook_form_builder.rb", "lib/facebooker/rails/facebook_pretty_errors.rb", "lib/facebooker/rails/facebook_request_fix.rb", "lib/facebooker/rails/facebook_request_fix_2-3.rb", "lib/facebooker/rails/facebook_session_handling.rb", "lib/facebooker/rails/facebook_url_helper.rb", "lib/facebooker/rails/facebook_url_rewriting.rb", "lib/facebooker/rails/helpers.rb", "lib/facebooker/rails/helpers/fb_connect.rb", "lib/facebooker/rails/integration_session.rb", "lib/facebooker/rails/profile_publisher_extensions.rb", "lib/facebooker/rails/publisher.rb", "lib/facebooker/rails/routing.rb", "lib/facebooker/rails/test_helpers.rb", "lib/facebooker/rails/utilities.rb", "lib/facebooker/server_cache.rb", "lib/facebooker/service.rb", "lib/facebooker/service/base_service.rb", "lib/facebooker/service/curl_service.rb", "lib/facebooker/service/net_http_service.rb", "lib/facebooker/service/typhoeus_service.rb", "lib/facebooker/service/typhoeus_multi_service.rb", "lib/facebooker/session.rb", "lib/facebooker/stream_post.rb", "lib/facebooker/version.rb", "lib/net/http_multipart_post.rb", "lib/rack/facebook.rb", "lib/rack/facebook_session.rb", "lib/tasks/facebooker.rake", "lib/tasks/facebooker.rb", "lib/tasks/tunnel.rake", "rails/init.rb", "setup.rb", "templates/layout.erb", "test/facebooker/adapters_test.rb", "test/facebooker/admin_test.rb", "test/facebooker/application_test.rb", "test/facebooker/attachment_test.rb", "test/facebooker/batch_request_test.rb", "test/facebooker/data_test.rb", "test/facebooker/logging_test.rb", "test/facebooker/mobile_test.rb", "test/facebooker/model_test.rb", "test/facebooker/models/event_test.rb", "test/facebooker/models/page_test.rb", "test/facebooker/models/photo_test.rb", "test/facebooker/models/user_test.rb", "test/facebooker/rails/publisher_test.rb", "test/facebooker/rails_integration_test.rb", "test/facebooker/rails/facebook_request_fix_2-3_test.rb", "test/facebooker/server_cache_test.rb", "test/facebooker/session_test.rb", "test/facebooker_test.rb", "test/fixtures/multipart_post_body_with_only_parameters.txt", "test/fixtures/multipart_post_body_with_single_file.txt", "test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt", "test/net/http_multipart_post_test.rb", "test/rack/facebook_test.rb", "test/rack/facebook_session_test.rb", "test/rails_test_helper.rb", "test/test_helper.rb", "test/facebooker/rails/facebook_url_rewriting_test.rb", "test/facebooker/rails/integration_session_test.rb", "test/facebooker/service_test.rb"]
19
19
  s.homepage = %q{http://facebooker.rubyforge.org}
20
20
  s.rdoc_options = ["--main", "README.rdoc"]
21
21
  s.require_paths = ["lib"]
22
22
  s.rubyforge_project = %q{facebooker}
23
- s.rubygems_version = %q{1.3.4}
23
+ s.rubygems_version = %q{1.3.5}
24
24
  s.summary = %q{Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://wiki.developers.facebook.com/index.php/API]}
25
- s.test_files = ["test/facebooker/adapters_test.rb", "test/facebooker/admin_test.rb", "test/facebooker/application_test.rb", "test/facebooker/attachment_test.rb", "test/facebooker/batch_request_test.rb", "test/facebooker/data_test.rb", "test/facebooker/logging_test.rb", "test/facebooker/mobile_test.rb", "test/facebooker/model_test.rb", "test/facebooker/models/event_test.rb", "test/facebooker/models/page_test.rb", "test/facebooker/models/photo_test.rb", "test/facebooker/models/user_test.rb", "test/facebooker/rails/facebook_request_fix_2-3_test.rb", "test/facebooker/rails/facebook_url_rewriting_test.rb", "test/facebooker/rails/integration_session_test.rb", "test/facebooker/rails/publisher_test.rb", "test/facebooker/rails_integration_test.rb", "test/facebooker/server_cache_test.rb", "test/facebooker/service_test.rb", "test/facebooker/session_test.rb", "test/facebooker_test.rb", "test/net/http_multipart_post_test.rb", "test/rack/facebook_test.rb"]
25
+ s.test_files = ["test/facebooker/adapters_test.rb", "test/facebooker/admin_test.rb", "test/facebooker/application_test.rb", "test/facebooker/attachment_test.rb", "test/facebooker/batch_request_test.rb", "test/facebooker/data_test.rb", "test/facebooker/logging_test.rb", "test/facebooker/mobile_test.rb", "test/facebooker/model_test.rb", "test/facebooker/models/event_test.rb", "test/facebooker/models/page_test.rb", "test/facebooker/models/photo_test.rb", "test/facebooker/models/user_test.rb", "test/facebooker/rails/facebook_request_fix_2-3_test.rb", "test/facebooker/rails/facebook_url_rewriting_test.rb", "test/facebooker/rails/integration_session_test.rb", "test/facebooker/rails/publisher_test.rb", "test/facebooker/rails_integration_test.rb", "test/facebooker/server_cache_test.rb", "test/facebooker/service_test.rb", "test/facebooker/session_test.rb", "test/facebooker_test.rb", "test/net/http_multipart_post_test.rb", "test/rack/facebook_session_test.rb", "test/rack/facebook_test.rb"]
26
26
 
27
27
  if s.respond_to? :specification_version then
28
28
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
@@ -30,13 +30,13 @@ Gem::Specification.new do |s|
30
30
 
31
31
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
32
32
  s.add_runtime_dependency(%q<json>, [">= 1.0.0"])
33
- s.add_development_dependency(%q<hoe>, [">= 2.3.2"])
33
+ s.add_development_dependency(%q<hoe>, [">= 2.4.0"])
34
34
  else
35
35
  s.add_dependency(%q<json>, [">= 1.0.0"])
36
- s.add_dependency(%q<hoe>, [">= 2.3.2"])
36
+ s.add_dependency(%q<hoe>, [">= 2.4.0"])
37
37
  end
38
38
  else
39
39
  s.add_dependency(%q<json>, [">= 1.0.0"])
40
- s.add_dependency(%q<hoe>, [">= 2.3.2"])
40
+ s.add_dependency(%q<hoe>, [">= 2.4.0"])
41
41
  end
42
42
  end
@@ -183,6 +183,15 @@ module Facebooker
183
183
  @session.post('facebook.stream.addComment', {:post_id=>post_id, :comment=>comment})
184
184
  end
185
185
 
186
+ ###
187
+ # Add a like on a post
188
+ #
189
+ # See: http://wiki.developers.facebook.com/index.php/Stream.addLike
190
+ #
191
+ # +post_id+ the post_id for the post that is being commented on
192
+ def add_like_on(post_id)
193
+ @session.post('facebook.stream.addLike', {:post_id=>post_id})
194
+ end
186
195
 
187
196
  def friend_lists
188
197
  @friend_lists ||= @session.post('facebook.friends.getLists').map do |hash|
@@ -223,6 +223,12 @@ module Facebooker
223
223
  end
224
224
  end
225
225
 
226
+ class StreamAddLike < Parser#:nodoc:
227
+ def self.process(data)
228
+ element('stream_addLike_response', data).content.strip
229
+ end
230
+ end
231
+
226
232
  class RegisterTemplateBundle < Parser#:nodoc:
227
233
  def self.process(data)
228
234
  element('feed_registerTemplateBundle_response', data).content.to_i
@@ -699,6 +705,7 @@ module Facebooker
699
705
  'facebook.photos.upload' => UploadPhoto,
700
706
  'facebook.stream.publish' => StreamPublish,
701
707
  'facebook.stream.addComment' => StreamAddComment,
708
+ 'facebook.stream.addLike' => StreamAddLike,
702
709
  'facebook.events.create' => EventsCreate,
703
710
  'facebook.events.cancel' => EventsCancel,
704
711
  'facebook.events.get' => EventsGet,
@@ -131,17 +131,14 @@ module Facebooker
131
131
 
132
132
  def secure_with_cookies!
133
133
  parsed = {}
134
-
135
- # josephsofaer finds the cookies[key] returns an array,
136
- # it doesn't happen for me (mmangino)
137
- # so force it to array and take the first value
138
- fb_cookie_names.each { |key| parsed[key[fb_cookie_prefix.size,key.size]] = Array(cookies[key]).first }
134
+
135
+ fb_cookie_names.each { |key| parsed[key[fb_cookie_prefix.size,key.size]] = cookies[key] }
139
136
 
140
137
  #returning gracefully if the cookies aren't set or have expired
141
138
  return unless parsed['session_key'] && parsed['user'] && parsed['expires'] && parsed['ss']
142
139
  return unless (Time.at(parsed['expires'].to_s.to_f) > Time.now) || (parsed['expires'] == "0")
143
140
  #if we have the unexpired cookies, we'll throw an exception if the sig doesn't verify
144
- verify_signature(parsed,cookies[Facebooker.api_key],true)
141
+ verify_signature(parsed,cookies[Facebooker.api_key], true)
145
142
 
146
143
  @facebook_session = new_facebook_session
147
144
  @facebook_session.secure_with!(parsed['session_key'],parsed['user'],parsed['expires'],parsed['ss'])
@@ -1,6 +1,14 @@
1
1
  # Somewhere in 2.3 RewindableInput was removed- rack supports it natively
2
2
  require 'rack/facebook'
3
+ require 'rack/facebook_session'
4
+
3
5
  ActionController::Dispatcher.middleware.insert_before(
4
6
  ActionController::ParamsParser,
5
7
  Rack::Facebook
6
8
  )
9
+
10
+ # ActionController::Dispatcher.middleware.insert_before(
11
+ # ActionController::Base.session_store,
12
+ # Rack::FacebookSession,
13
+ # lambda { ActionController::Base.session_options[:key] }
14
+ # )
@@ -25,6 +25,7 @@ module Facebooker
25
25
  # cancel_button is true or false
26
26
  def fb_dialog( id, cancel_button, &block )
27
27
  content = capture(&block)
28
+ cancel_button = cancel_button ? 1 : 0 unless cancel_button == 0
28
29
  versioned_concat( content_tag("fb:dialog", content, {:id => id, :cancel_button => cancel_button}), block.binding )
29
30
  end
30
31
 
@@ -107,17 +108,17 @@ module Facebooker
107
108
 
108
109
  # Create an fb:request-form with an fb_multi_friend_selector inside
109
110
  #
110
- # The content of the block are used as the message on the form,
111
+ # The content of the block are used as the message on the form, the options hash is passed onto fb_multi_friend_selector.
111
112
  #
112
113
  # For example:
113
- # <% fb_multi_friend_request("Poke","Choose some friends to Poke",create_poke_path) do %>
114
+ # <% fb_multi_friend_request("Poke","Choose some friends to Poke",create_poke_path,:exclude_ids => "123456789,987654321") do %>
114
115
  # If you select some friends, they will see this message.
115
116
  # <%= fb_req_choice("They will get this button, too",new_poke_path) %>
116
117
  # <% end %>
117
- def fb_multi_friend_request(type,friend_selector_message,url,&block)
118
+ def fb_multi_friend_request(type,friend_selector_message,url, fb_multi_friend_selector_options = {},&block)
118
119
  content = capture(&block)
119
120
  versioned_concat(content_tag("fb:request-form",
120
- fb_multi_friend_selector(friend_selector_message) + token_tag,
121
+ fb_multi_friend_selector(friend_selector_message, fb_multi_friend_selector_options) + token_tag,
121
122
  {:action=>url,:method=>"post",:invite=>true,:type=>type,:content=>content}
122
123
  ),
123
124
  block.binding)
@@ -697,8 +698,11 @@ module Facebooker
697
698
  # more details
698
699
  def fb_intl(text=nil, options={}, &proc)
699
700
  raise ArgumentError, "Missing block or text" unless block_given? or text
700
- content = block_given? ? capture(&proc) : text
701
- content_tag("fb:intl", content, stringify_vals(options))
701
+ if block_given?
702
+ versioned_concat(fb_intl(capture(&proc), options))
703
+ else
704
+ content_tag("fb:intl", text, stringify_vals(options))
705
+ end
702
706
  end
703
707
 
704
708
  # Renders a fb:intl-token element
@@ -710,8 +714,11 @@ module Facebooker
710
714
  # more details
711
715
  def fb_intl_token(name, text=nil, &proc)
712
716
  raise ArgumentError, "Missing block or text" unless block_given? or text
713
- content = block_given? ? capture(&proc) : text
714
- content_tag("fb:intl-token", content, stringify_vals({:name => name}))
717
+ if block_given?
718
+ versioned_concat(fb_intl_token(name, capture(&proc)))
719
+ else
720
+ content_tag("fb:intl-token", text, stringify_vals({:name => name}))
721
+ end
715
722
  end
716
723
 
717
724
  # Renders a fb:date element
@@ -109,6 +109,7 @@ module Facebooker
109
109
  @full_story_template = nil
110
110
  @recipients = nil
111
111
  @controller = PublisherController.new(self)
112
+ @action_links = nil
112
113
  end
113
114
 
114
115
  def self.default_url_options
@@ -709,6 +709,7 @@ module Facebooker
709
709
  end
710
710
 
711
711
  def signature_for(params)
712
+ params.delete_if { |k,v| v.nil? }
712
713
  raw_string = params.inject([]) do |collection, pair|
713
714
  collection << pair.map { |x|
714
715
  Array === x ? Facebooker.json_encode(x) : x
@@ -2,7 +2,7 @@ module Facebooker #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
4
  MINOR = 0
5
- TINY = 58
5
+ TINY = 59
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -0,0 +1,21 @@
1
+ require 'rack/request'
2
+
3
+ module Rack
4
+ class FacebookSession
5
+
6
+ FACEBOOK_SESSION_KEY = 'fb_sig_session_key'
7
+
8
+ def initialize(app, session_key = lambda { '_session_id' })
9
+ @app = app
10
+ @session_key = session_key
11
+ end
12
+
13
+ def call(env)
14
+ req = Rack::Request.new(env)
15
+ key = req.POST[FACEBOOK_SESSION_KEY] || req.GET[FACEBOOK_SESSION_KEY]
16
+ env['HTTP_COOKIE'] = [ @session_key.call, key ].join('=').freeze unless key.nil?
17
+
18
+ @app.call(env)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,2 @@
1
+ load 'tasks/facebooker.rake'
2
+ load 'tasks/tunnel.rake'
@@ -183,6 +183,12 @@ class Facebooker::UserTest < Test::Unit::TestCase
183
183
  assert_equal('703826862_78463536863', @user.comment_on('703826862_78463536862', :message => 'that was hilarious!'))
184
184
  end
185
185
 
186
+ def test_add_like_on
187
+ @user = Facebooker::User.new(548871286, @session)
188
+ expect_http_posts_with_responses(example_add_like_on_response)
189
+ assert_equal('1', @user.add_like_on('703826862_78463536862'))
190
+ end
191
+
186
192
  def test_can_send_email
187
193
  @user.expects(:send_email).with("subject", "body text")
188
194
  @user.send_email("subject", "body text")
@@ -405,6 +411,13 @@ class Facebooker::UserTest < Test::Unit::TestCase
405
411
  <stream_addComment_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">703826862_78463536863</stream_addComment_response>
406
412
  eoxml
407
413
  end
414
+
415
+ def example_add_like_on_response
416
+ <<-eoxml
417
+ <?xml version="1.0" encoding="UTF-8"?>
418
+ <stream_addLike_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</stream_addLike_response>
419
+ eoxml
420
+ end
408
421
 
409
422
  def example_events_rsvp_xml
410
423
  <<-E
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../rails_test_helper')
2
2
 
3
3
  module FBConnectTestHelpers
4
4
  def setup_fb_connect_cookies(params=cookie_hash_for_auth)
5
- params.each {|k,v| @request.cookies[ENV['FACEBOOK_API_KEY']+k] = CGI::Cookie.new(ENV['FACEBOOK_API_KEY']+k,v)}
5
+ params.each {|k,v| @request.cookies[ENV['FACEBOOK_API_KEY']+k] = CGI::Cookie.new(ENV['FACEBOOK_API_KEY']+k,v).first}
6
6
  end
7
7
 
8
8
  def expired_cookie_hash_for_auth
@@ -171,7 +171,6 @@ class RailsIntegrationTestForFBConnect < Test::Unit::TestCase
171
171
  def test_doesnt_set_cookie_but_facebook_session_is_available
172
172
  setup_fb_connect_cookies
173
173
  get :index
174
- p "this one"
175
174
  assert_not_nil @controller.facebook_session
176
175
  assert_nil @response.cookies[:facebook_session]
177
176
 
@@ -884,8 +883,7 @@ class RailsHelperTest < Test::Unit::TestCase
884
883
 
885
884
  def test_fb_dialog
886
885
  @h.expects(:capture).returns("dialog content")
887
- @h.fb_dialog( "my_dialog", "1" ) do
888
- end
886
+ @h.fb_dialog( "my_dialog", true ) {}
889
887
  assert_equal '<fb:dialog cancel_button="1" id="my_dialog">dialog content</fb:dialog>', @h.output_buffer
890
888
  end
891
889
  def test_fb_dialog_title
@@ -1124,7 +1122,7 @@ class RailsHelperTest < Test::Unit::TestCase
1124
1122
  stream_post.target="12451752"
1125
1123
  stream_post.attachment = attachment
1126
1124
 
1127
- assert @h.fb_connect_stream_publish(stream_post).match(/FB.Connect\.streamPublish\(\"message\", {\"name\":\s?\"name\"}, \[], \"12451752\", null, null, false, null\);/)
1125
+ assert @h.fb_connect_stream_publish(stream_post).match(/FB.Connect\.streamPublish\(\"message\", \{\"name\":\s?\"name\"\}, \[\], \"12451752\", null, null, false, null\);/)
1128
1126
  end
1129
1127
 
1130
1128
  def test_fb_connect_javascript_tag
@@ -0,0 +1,34 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+ require 'rack/facebook_session'
3
+ require 'rack/lint'
4
+ require 'rack/mock'
5
+
6
+ class Rack::FacebookSessionTest < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @app = lambda do |env|
10
+ @env = env
11
+ Rack::Response.new().to_a
12
+ end
13
+
14
+ @facebook = Rack::FacebookSession.new(@app, lambda { '_top_sekrit' })
15
+ end
16
+
17
+ def params(p)
18
+ p.map{|*args| args.join('=') }.join('&')
19
+ end
20
+
21
+ def app
22
+ Rack::MockRequest.new(Rack::Lint.new(@facebook))
23
+ end
24
+
25
+ def test_converts_session_key_on_get
26
+ response = app.get '/', :input => params(:fb_sig_session_key => 'foo')
27
+ assert_equal '_top_sekrit=foo', @env['HTTP_COOKIE']
28
+ end
29
+
30
+ def test_converts_session_key_on_post
31
+ response = app.post '/', :input => params(:fb_sig_session_key => 'foo')
32
+ assert_equal '_top_sekrit=foo', @env['HTTP_COOKIE']
33
+ end
34
+ end
@@ -11,7 +11,7 @@ begin
11
11
  require 'multi_rails_init'
12
12
  rescue LoadError
13
13
  # multi rails not installed, test against newest supported version of Rails
14
- gem 'rails', '2.2.2'
14
+ gem 'rails', '2.3.5'
15
15
  end
16
16
  require 'activesupport'
17
17
  require 'flexmock/test_unit'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facebooker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.58
4
+ version: 1.0.59
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Fowler
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2009-12-11 00:00:00 -05:00
17
+ date: 2010-01-15 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -35,7 +35,7 @@ dependencies:
35
35
  requirements:
36
36
  - - ">="
37
37
  - !ruby/object:Gem::Version
38
- version: 2.3.2
38
+ version: 2.4.0
39
39
  version:
40
40
  description: |-
41
41
  Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://wiki.developers.facebook.com/index.php/API]. Its goals are:
@@ -177,7 +177,9 @@ files:
177
177
  - lib/facebooker/version.rb
178
178
  - lib/net/http_multipart_post.rb
179
179
  - lib/rack/facebook.rb
180
+ - lib/rack/facebook_session.rb
180
181
  - lib/tasks/facebooker.rake
182
+ - lib/tasks/facebooker.rb
181
183
  - lib/tasks/tunnel.rake
182
184
  - rails/init.rb
183
185
  - setup.rb
@@ -206,6 +208,7 @@ files:
206
208
  - test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt
207
209
  - test/net/http_multipart_post_test.rb
208
210
  - test/rack/facebook_test.rb
211
+ - test/rack/facebook_session_test.rb
209
212
  - test/rails_test_helper.rb
210
213
  - test/test_helper.rb
211
214
  has_rdoc: true
@@ -233,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
236
  requirements: []
234
237
 
235
238
  rubyforge_project: facebooker
236
- rubygems_version: 1.3.4
239
+ rubygems_version: 1.3.5
237
240
  signing_key:
238
241
  specification_version: 3
239
242
  summary: Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://wiki.developers.facebook.com/index.php/API]
@@ -261,4 +264,5 @@ test_files:
261
264
  - test/facebooker/session_test.rb
262
265
  - test/facebooker_test.rb
263
266
  - test/net/http_multipart_post_test.rb
267
+ - test/rack/facebook_session_test.rb
264
268
  - test/rack/facebook_test.rb