From a4985c1d2a728d7c44972427106a239c3be45598 Mon Sep 17 00:00:00 2001 From: mmangino Date: Thu, 12 Jun 2008 19:09:46 +0000 Subject: [PATCH] Added setInfo and pretty errors git-svn-id: svn+ssh://rubyforge.org/var/svn/facebooker/trunk/facebooker@217 06148572-b36b-44fe-9aa8-f68b04d8b080 --- init.rb | 2 +- lib/facebooker.rb | 2 ++ lib/facebooker/models/info_item.rb | 10 ++++++++ lib/facebooker/models/info_section.rb | 10 ++++++++ lib/facebooker/models/user.rb | 6 +++++ lib/facebooker/parser.rb | 10 +++++++- .../rails/facebook_pretty_errors.rb | 14 +++++++++++ lib/facebooker/service.rb | 1 + lib/facebooker/session.rb | 4 ++-- templates/layout.erb | 24 +++++++++++++++++++ 10 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 lib/facebooker/models/info_item.rb create mode 100644 lib/facebooker/models/info_section.rb create mode 100644 lib/facebooker/rails/facebook_pretty_errors.rb create mode 100644 templates/layout.erb diff --git a/init.rb b/init.rb index b5518f39..a3d4552b 100644 --- a/init.rb +++ b/init.rb @@ -5,7 +5,7 @@ require 'facebooker/rails/facebook_asset_path' require 'facebooker/rails/facebook_request_fix' require 'facebooker/rails/routing' - +require 'facebooker/rails/facebook_pretty_errors' module ::ActionController class Base def self.inherited_with_facebooker(subclass) diff --git a/lib/facebooker.rb b/lib/facebooker.rb index bd53d2c1..0276b237 100644 --- a/lib/facebooker.rb +++ b/lib/facebooker.rb @@ -22,6 +22,8 @@ require 'facebooker/models/applicationproperties' require 'facebooker/models/tag' require 'facebooker/models/user' +require 'facebooker/models/info_item' +require 'facebooker/models/info_section' module Facebooker class << self diff --git a/lib/facebooker/models/info_item.rb b/lib/facebooker/models/info_item.rb new file mode 100644 index 00000000..73c23d0f --- /dev/null +++ b/lib/facebooker/models/info_item.rb @@ -0,0 +1,10 @@ +module Facebooker + class InfoItem + include Model + attr_accessor :label, :image,:description, :link + + def to_json + {:label=>label,:image=>image,:description=>description,:link=>link}.to_json + end + end +end \ No newline at end of file diff --git a/lib/facebooker/models/info_section.rb b/lib/facebooker/models/info_section.rb new file mode 100644 index 00000000..e919003e --- /dev/null +++ b/lib/facebooker/models/info_section.rb @@ -0,0 +1,10 @@ +module Facebooker + class InfoSection + include Model + attr_accessor :field, :items + + def to_json + {:field=>field,:items=>items}.to_json + end + end +end \ No newline at end of file diff --git a/lib/facebooker/models/user.rb b/lib/facebooker/models/user.rb index f1c38120..7da42a19 100644 --- a/lib/facebooker/models/user.rb +++ b/lib/facebooker/models/user.rb @@ -169,6 +169,12 @@ def set_profile_fbml(profile_fbml, mobile_fbml, profile_action_fbml) session.post('facebook.profile.setFBML', parameters) end + def set_info(title,sections,format=:text) + format_id = format.to_s == "text" ? 1 : 5 + sections = [sections] unless sections.is_a?(Array) + session.post('facebook.profile.setInfo',{:title=>title,:info_fields=>sections.to_json,:type=>format_id,:uid=>id},false) + end + ## # Set the status of the user # diff --git a/lib/facebooker/parser.rb b/lib/facebooker/parser.rb index f14a8c8d..b1409064 100644 --- a/lib/facebooker/parser.rb +++ b/lib/facebooker/parser.rb @@ -252,6 +252,13 @@ def self.process(data) first_child.nil? ? [] : [first_child.name, array_of_hashes(root, first_child.name)] end end + + class SetInfo < Parser#:nodoc: + def self.process(data) + raise data + element('fbml_setRefHandle_response', data).text_value + end + end class SetRefHandle < Parser#:nodoc: def self.process(data) @@ -432,7 +439,8 @@ class Parser 'facebook.groups.get' => GroupsGet, 'facebook.events.getMembers' => EventMembersGet, 'facebook.groups.getMembers' => GroupGetMembers, - 'facebook.notifications.sendEmail' => NotificationsSendEmail + 'facebook.notifications.sendEmail' => NotificationsSendEmail, + 'facebook.profile.setInfo' => SetInfo } end diff --git a/lib/facebooker/rails/facebook_pretty_errors.rb b/lib/facebooker/rails/facebook_pretty_errors.rb new file mode 100644 index 00000000..b24c504b --- /dev/null +++ b/lib/facebooker/rails/facebook_pretty_errors.rb @@ -0,0 +1,14 @@ +if RAILS_ENV=="development" + class ActionController::Base + def rescues_path_with_facebooker(template_name) + t="#{RAILS_ROOT}/vendor/plugins/facebooker/templates/#{template_name}.erb" + File.exist?(t) ? t : rescues_path_without_facebooker(template_name) + end + + alias_method_chain :rescues_path,:facebooker + + def response_code_for_rescue(exception) + 200 + end + end +end \ No newline at end of file diff --git a/lib/facebooker/service.rb b/lib/facebooker/service.rb index 54fdd794..d0945b01 100644 --- a/lib/facebooker/service.rb +++ b/lib/facebooker/service.rb @@ -10,6 +10,7 @@ def initialize(api_base, api_path, api_key) # TODO: support ssl def post(params) + puts params.to_json Parser.parse(params[:method], Net::HTTP.post_form(url, params)) end diff --git a/lib/facebooker/session.rb b/lib/facebooker/session.rb index 98977e47..0701519a 100644 --- a/lib/facebooker/session.rb +++ b/lib/facebooker/session.rb @@ -402,9 +402,9 @@ def batch(serial_only=false) BatchRun.current_batch=nil end - def post(method, params = {},&proc) + def post(method, params = {},use_session_key=true,&proc) add_facebook_params(params, method) - @session_key && params[:session_key] ||= @session_key + use_session_key && @session_key && params[:session_key] ||= @session_key final_params=params.merge(:sig => signature_for(params)) if batch_request? add_to_batch(final_params,&proc) diff --git a/templates/layout.erb b/templates/layout.erb new file mode 100644 index 00000000..d7f002b2 --- /dev/null +++ b/templates/layout.erb @@ -0,0 +1,24 @@ + + + +<%= @contents %> + + \ No newline at end of file