lib/facebooker.rb in mmangino-facebooker-1.0.29 vs lib/facebooker.rb in mmangino-facebooker-1.0.30

- old
+ new

@@ -1,8 +1,8 @@ begin unless Object.const_defined?("ActiveSupport") and ActiveSupport.const_defined?("JSON") - require 'json' + require 'json' module Facebooker def self.json_decode(str) JSON.parse(str) end end @@ -10,34 +10,40 @@ module Facebooker def self.json_decode(str) ActiveSupport::JSON.decode(str) end end - end + end rescue - require 'json' + require 'json' end require 'zlib' require 'digest/md5' module Facebooker - + + @facebooker_configuration = {} + @current_adapter = nil + @set_asset_host_to_callback_url = nil + @path_prefix = nil + @use_curl = false + class << self - + def load_configuration(facebooker_yaml_file) if File.exist?(facebooker_yaml_file) if defined? RAILS_ENV config = YAML.load_file(facebooker_yaml_file)[RAILS_ENV] else config = YAML.load_file(facebooker_yaml_file) end apply_configuration(config) end end - + # Sets the Facebook environment based on a hash of options. # By default the hash passed in is loaded from facebooker.yml, but it can also be passed in # manually every request to run multiple Facebook apps off one Rails app. def apply_configuration(config) ENV['FACEBOOK_API_KEY'] = config['api_key'] @@ -51,74 +57,70 @@ ActionController::Base.asset_host = config['callback_url'] end Facebooker.timeout = config['timeout'] @facebooker_configuration = config end - + def facebooker_config - @facebooker_configuration || {} # to prevent pretty_errors error if the config hasn't been set yet + @facebooker_configuration end - - def current_adapter=(adapter_class) - @current_adapter = adapter_class - end - + + # TODO: This should be converted to attr_accessor, but we need to + # get all the require statements at the top of the file to work. + + # Set the current adapter + attr_writer :current_adapter + + # Get the current adapter def current_adapter @current_adapter || Facebooker::AdapterBase.default_adapter end - + def load_adapter(params) self.current_adapter = Facebooker::AdapterBase.load_adapter(params) end - + def facebook_path_prefix=(path) current_adapter.facebook_path_prefix = path end - + # Default is canvas_page_name in yml file def facebook_path_prefix current_adapter.facebook_path_prefix end - + def is_for?(application_container) current_adapter.is_for?(application_container) end - + def set_asset_host_to_callback_url=(val) @set_asset_host_to_callback_url=val end - + def set_asset_host_to_callback_url - @set_asset_host_to_callback_url.nil? ? true : @set_asset_host_to_callback_url + @set_asset_host_to_callback_url || true end - - def use_curl=(val) - @use_curl=val - end - - def use_curl? - @use_curl - end - + + attr_accessor :use_curl + alias :use_curl? :use_curl + def timeout=(val) @timeout = val.to_i end - + def timeout @timeout end - + [:api_key,:secret_key, :www_server_base_url,:login_url_base,:install_url_base,:api_rest_path,:api_server_base,:api_server_base_url,:canvas_server_base, :video_server_base].each do |delegated_method| define_method(delegated_method){ return current_adapter.send(delegated_method)} end - - - def path_prefix - @path_prefix - end - - + + + attr_reader :path_prefix + + # Set the asset path to the canvas path for just this one request # by definition, we will make this a canvas request def with_asset_path_for_canvas original_asset_host = ActionController::Base.asset_host begin @@ -128,10 +130,10 @@ end ensure ActionController::Base.asset_host = original_asset_host end end - + # If this request is_canvas_request # then use the application name as the url root def request_for_canvas(is_canvas_request) original_path_prefix = @path_prefix begin