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