facebooker 1.0.54 → 1.0.55

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.
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{facebooker}
5
- s.version = "1.0.54"
5
+ s.version = "1.0.55"
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-10-13}
9
+ s.date = %q{2009-11-06}
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,7 +15,7 @@ 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/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/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.rb", "test/facebooker/application_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/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/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/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"]
19
19
  s.homepage = %q{http://facebooker.rubyforge.org}
20
20
  s.rdoc_options = ["--main", "README.rdoc"]
21
21
  s.require_paths = ["lib"]
@@ -374,7 +374,14 @@ module Facebooker
374
374
  @status = Status.from_hash(message)
375
375
  end
376
376
  end
377
-
377
+
378
+
379
+ ##
380
+ # Return +limit+ statuses from the user
381
+ def statuses( limit = 50 )
382
+ session.post('facebook.status.get', {:uid => uid, :limit => limit}).collect { |ret| Status.from_hash(ret) }
383
+ end
384
+
378
385
  ##
379
386
  # Set the status for a user
380
387
  # DOES NOT prepend "is" to the message
@@ -554,6 +554,12 @@ module Facebooker
554
554
  end
555
555
  end
556
556
 
557
+ class GetStatus < Parser # :nodoc:
558
+ def self.process(data)
559
+ array_of_hashes(element('status_get_response',data),'user_status')
560
+ end
561
+ end
562
+
557
563
  class GetPreference < Parser#:nodoc:
558
564
  def self.process(data)
559
565
  element('data_getUserPreference_response', data).content.strip
@@ -647,6 +653,7 @@ module Facebooker
647
653
  'facebook.users.getInfo' => UserInfo,
648
654
  'facebook.users.getStandardInfo' => UserStandardInfo,
649
655
  'facebook.users.setStatus' => SetStatus,
656
+ 'facebook.status.get' => GetStatus,
650
657
  'facebook.users.getLoggedInUser' => GetLoggedInUser,
651
658
  'facebook.users.hasAppPermission' => UserHasPermission,
652
659
  'facebook.pages.isAdmin' => PagesIsAdmin,
@@ -10,7 +10,7 @@ module Facebooker
10
10
  def self.create_with_offset(name,offset)
11
11
  define_method name do |field,*args|
12
12
  options = args[offset] || {}
13
- build_shell(field,options) do
13
+ build_shell(field,options.with_indifferent_access) do
14
14
  super
15
15
  end
16
16
  end
@@ -42,6 +42,7 @@ module Facebooker
42
42
 
43
43
 
44
44
  def text_field(method, options = {})
45
+ options = options.with_indifferent_access
45
46
  options[:label] ||= label_for(method,options)
46
47
  add_default_name_and_id(options,method)
47
48
  options["value"] ||= value_before_type_cast(object,method)
@@ -102,11 +103,39 @@ module Facebooker
102
103
  @template.content_tag("fb:editor-button","",:value=>name,:name=>"commit")
103
104
  end
104
105
 
105
- def add_default_name_and_id(options,method)
106
- options[:name] ||= "#{object.class.name.underscore}[#{method}]"
107
- options[:id] ||= "#{object.class.name.underscore}_#{method}"
106
+ def add_default_name_and_id(options, method)
107
+ @method_name = method
108
+ if options.has_key?("index")
109
+ options["name"] ||= tag_name_with_index(options["index"])
110
+ options["id"] ||= tag_id_with_index(options["index"])
111
+ options.delete("index")
112
+ else
113
+ options["name"] ||= tag_name + (options.has_key?('multiple') ? '[]' : '')
114
+ options["id"] ||= "#{sanitized_object_name}_#{sanitized_method_name}"
115
+ end
108
116
  end
109
117
 
118
+
119
+ private
120
+ def tag_name
121
+ "#{@object_name.to_s}[#{sanitized_method_name}]"
122
+ end
123
+
124
+ def tag_name_with_index(index)
125
+ "#{@object_name.to_s}[#{index}][#{sanitized_method_name}]"
126
+ end
127
+
128
+ def tag_id_with_index(index)
129
+ "#{sanitized_object_name}_#{index}_#{sanitized_method_name}"
130
+ end
131
+
132
+ def sanitized_object_name
133
+ @object_name.to_s.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
134
+ end
135
+
136
+ def sanitized_method_name
137
+ @method_name.to_s.sub(/\?$/,"")
138
+ end
110
139
  end
111
140
  end
112
141
  end
@@ -2,7 +2,7 @@ module Facebooker
2
2
  module Rails
3
3
  module Helpers
4
4
  module FbConnect
5
-
5
+
6
6
  def fb_connect_javascript_tag(options = {})
7
7
  # accept both Rails and Facebook locale formatting, i.e. "en-US" and "en_US".
8
8
  lang = "/#{options[:lang].to_s.gsub('-', '_')}" if options[:lang]
@@ -13,9 +13,9 @@ module Facebooker
13
13
  "<script src=\"http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php#{lang}\" type=\"text/javascript\"></script>"
14
14
  end
15
15
  end
16
-
17
- #
18
- # For information on the :app_settings argument see http://wiki.developers.facebook.com/index.php/JS_API_M_FB.Facebook.Init_2
16
+
17
+ #
18
+ # For information on the :app_settings argument see http://wiki.developers.facebook.com/index.php/JS_API_M_FB.Facebook.Init_2
19
19
  # While it would be nice to treat :app_settings as a hash, some of the arguments do different things if they are a string vs a javascript function
20
20
  # and Rails' Hash#to_json always quotes strings so there is no way to indicate when the value should be a javascript function.
21
21
  # For this reason :app_settings needs to be a string that is valid JSON (including the {}'s).
@@ -41,7 +41,7 @@ module Facebooker
41
41
  unless required_features.blank?
42
42
  init_string = <<-FBML
43
43
  #{case options[:js]
44
- when :jquery then "$(document).ready("
44
+ when :jquery then "jQuery(document).ready("
45
45
  when :dojo then "dojo.addOnLoad("
46
46
  else "Element.observe(window,'load',"
47
47
  end} function() {
@@ -64,9 +64,9 @@ module Facebooker
64
64
  javascript_tag init_string
65
65
  end
66
66
  end
67
-
67
+
68
68
  # Render an <fb:login-button> element
69
- #
69
+ #
70
70
  # ==== Examples
71
71
  #
72
72
  # <%= fb_login_button%>
@@ -97,25 +97,25 @@ module Facebooker
97
97
  end
98
98
  content_tag("fb:login-button",nil,options.merge(:onlogin=>js))
99
99
  end
100
-
100
+
101
101
  def fb_unconnected_friends_count
102
102
  content_tag "fb:unconnected-friends-count",nil
103
103
  end
104
-
104
+
105
105
  def fb_logout_link(text,url,*args)
106
106
  js = update_page do |page|
107
107
  page.call "FB.Connect.logoutAndRedirect",url
108
108
  end
109
109
  link_to_function text, js, *args
110
110
  end
111
-
111
+
112
112
  def fb_user_action(action, user_message = nil, prompt = "", callback = nil)
113
113
  defaulted_callback = callback || "null"
114
114
  update_page do |page|
115
115
  page.call("FB.Connect.showFeedDialog",action.template_id,action.data,action.target_ids,action.body_general,nil,page.literal("FB.RequireConnect.promptConnect"),page.literal(defaulted_callback),prompt,user_message.nil? ? nil : {:value=>user_message})
116
116
  end
117
117
  end
118
-
118
+
119
119
  end
120
120
  end
121
121
  end
@@ -239,9 +239,12 @@ module Facebooker
239
239
  def fql_query(query, format = 'XML')
240
240
  post('facebook.fql.query', :query => query, :format => format) do |response|
241
241
  type = response.shift
242
- return [] if type.nil?
243
- response.shift.map do |hash|
244
- fql_build_object(type, hash)
242
+ if type.nil?
243
+ []
244
+ else
245
+ response.shift.map do |hash|
246
+ fql_build_object(type, hash)
247
+ end
245
248
  end
246
249
  end
247
250
  end
@@ -285,10 +288,33 @@ module Facebooker
285
288
  end
286
289
  end
287
290
 
288
- # Creates an event with the event_info hash and an optional Net::HTTP::MultipartPostFile for the event picture
291
+ # Creates an event with the event_info hash and an optional Net::HTTP::MultipartPostFile for the event picture.
292
+ # If ActiveSupport::TimeWithZone is installed (it's in Rails > 2.1), and start_time or end_time are given as
293
+ # ActiveSupport::TimeWithZone, then they will be assumed to represent local time for the event. They will automatically be
294
+ # converted to the expected timezone for Facebook, which is PST or PDT depending on when the event occurs.
289
295
  # Returns the eid of the newly created event
290
296
  # http://wiki.developers.facebook.com/index.php/Events.create
291
297
  def create_event(event_info, multipart_post_file = nil)
298
+ if defined?(ActiveSupport::TimeWithZone) && defined?(ActiveSupport::TimeZone)
299
+ # Facebook expects all event local times to be in Pacific Time, so we need to take the actual local time and
300
+ # send it to Facebook as if it were Pacific Time converted to Unix epoch timestamp. Very confusing...
301
+ facebook_time = ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
302
+
303
+ start_time = event_info.delete(:start_time) || event_info.delete('start_time')
304
+ if start_time && start_time.is_a?(ActiveSupport::TimeWithZone)
305
+ event_info['start_time'] = facebook_time.parse(start_time.strftime("%Y-%m-%d %H:%M:%S")).to_i
306
+ else
307
+ event_info['start_time'] = start_time
308
+ end
309
+
310
+ end_time = event_info.delete(:end_time) || event_info.delete('end_time')
311
+ if end_time && end_time.is_a?(ActiveSupport::TimeWithZone)
312
+ event_info['end_time'] = facebook_time.parse(end_time.strftime("%Y-%m-%d %H:%M:%S")).to_i
313
+ else
314
+ event_info['end_time'] = end_time
315
+ end
316
+ end
317
+
292
318
  post_file('facebook.events.create', :event_info => event_info.to_json, nil => multipart_post_file)
293
319
  end
294
320
 
@@ -2,7 +2,7 @@ module Facebooker #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
4
  MINOR = 0
5
- TINY = 54
5
+ TINY = 55
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -98,6 +98,14 @@ class Facebooker::UserTest < Test::Unit::TestCase
98
98
  @user.profile_main="test"
99
99
  end
100
100
 
101
+
102
+ def test_can_call_get_status
103
+ @session.expects(:post).with('facebook.status.get', {:uid => 1234, :limit => 4}).returns([{ "time" => 1233804858, "source" => 6628568379, "message" => "my message rocks!", "status_id" => 61436484312, 'uid' => 1234 }])
104
+ st = @user.statuses( 4 )
105
+ assert_equal st.size, 1
106
+ assert_equal st.first.message, 'my message rocks!'
107
+ end
108
+
101
109
  def test_can_call_set_profile_fbml
102
110
  @session.expects(:post).with('facebook.profile.setFBML', {:uid=>1234,:profile=>"profile",:profile_action=>"action",:mobile_profile=>"mobile"},false)
103
111
  @user.set_profile_fbml("profile","mobile","action")
@@ -1079,7 +1079,7 @@ class RailsHelperTest < Test::Unit::TestCase
1079
1079
 
1080
1080
  def test_init_fb_connect_with_features_and_options_js_jquery
1081
1081
  assert @h.init_fb_connect("XFBML", :js => :jquery).match(/XFBML.*/)
1082
- assert @h.init_fb_connect("XFBML", :js => :jquery).match(/\$\(document\).ready\(/)
1082
+ assert @h.init_fb_connect("XFBML", :js => :jquery).match(/\jQuery\(document\).ready\(/)
1083
1083
  end
1084
1084
 
1085
1085
  def test_init_fb_connect_without_options_app_settings
@@ -190,6 +190,29 @@ class Facebooker::SessionTest < Test::Unit::TestCase
190
190
  assert_equal '34444349712', event_id
191
191
  end
192
192
 
193
+ def test_can_create_events_with_time_zones
194
+ mock_http = establish_session
195
+ mock_session = flexmock(@session)
196
+
197
+ # Start time is Jan 1, 2012 at 12:30pm EST
198
+ # This should be sent to Facebook as 12:30pm PST, or 1325449800 in Epoch time
199
+ start_time = ActiveSupport::TimeZone["Eastern Time (US & Canada)"].parse("2012-01-01 12:30:00")
200
+
201
+ # End time is July 4, 2012 at 3:00pm CDT
202
+ # Should be sent to Facebook as 3:00pm PDT, or 1341439200 in Epoch time
203
+ end_time = ActiveSupport::TimeZone["Central Time (US & Canada)"].parse("2012-07-04 15:00:00")
204
+
205
+ expected_info = {
206
+ 'name' => 'foo',
207
+ 'category' => 'bar',
208
+ 'start_time' => 1325449800,
209
+ 'end_time' => 1341439200
210
+ }.to_json
211
+
212
+ mock_session.should_receive(:post_file).once.with('facebook.events.create', {:event_info => expected_info, nil => nil}).and_return(example_event_create_xml).once
213
+ mock_session.create_event('name' => 'foo', 'category' => 'bar', :start_time => start_time, :end_time => end_time)
214
+ end
215
+
193
216
  def test_can_cancel_events
194
217
  expect_http_posts_with_responses(example_event_cancel_xml)
195
218
  assert @session.cancel_event("12345", :cancel_message => "It's raining")
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.54
4
+ version: 1.0.55
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-10-13 00:00:00 -04:00
17
+ date: 2009-11-06 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency