class FacebookCanvas::Middleware
Constants
- ENV_INSIDE
Public Class Methods
inside!(env)
click to toggle source
Check whether current request is marked as “inside Facebook Canvas”
# File lib/facebook_canvas/middleware.rb, line 39 def self.inside!(env) env[ENV_INSIDE] = true end
inside?(env)
click to toggle source
Mark current request as “inside Facebook Canvas”
# File lib/facebook_canvas/middleware.rb, line 44 def self.inside?(env) env[ENV_INSIDE] end
new(app, request_host, custom_filter, inside_filter: nil)
click to toggle source
# File lib/facebook_canvas/middleware.rb, line 17 def initialize(app, request_host, custom_filter, inside_filter: nil) @app = app @request_host = proc_for_request_host(request_host) @custom_filter = custom_filter @inside_filter = inside_filter end
Public Instance Methods
call(env)
click to toggle source
Forces REQUEST_METHOD to GET if required.
# File lib/facebook_canvas/middleware.rb, line 25 def call(env) inside = match_inside?(env) if inside self.class.inside!(env) end if inside && matches_server_name?(env) && was_get_request?(env) && !was_xhr_request?(env) && custom_filter?(env) env["REQUEST_METHOD"] = "GET" end @app.call env end
Private Instance Methods
custom_filter?(env)
click to toggle source
# File lib/facebook_canvas/middleware.rb, line 78 def custom_filter?(env) @custom_filter.call(env) end
match_inside?(env)
click to toggle source
# File lib/facebook_canvas/middleware.rb, line 50 def match_inside?(env) @inside_filter.nil? || @inside_filter.call(env) end
matches_server_name?(env)
click to toggle source
# File lib/facebook_canvas/middleware.rb, line 65 def matches_server_name?(env) @request_host.call(env) end
proc_for_request_host(request_host)
click to toggle source
# File lib/facebook_canvas/middleware.rb, line 54 def proc_for_request_host(request_host) case request_host when Regexp proc { |env| request_host =~ env["SERVER_NAME"] } when Proc request_host else raise ArgumentError, "Expected Regexp or Proc for `request_host` but got: #{request_host.inspect}" end end
was_get_request?(env)
click to toggle source
# File lib/facebook_canvas/middleware.rb, line 69 def was_get_request?(env) form_hash = env["rack.request.form_hash"] || {} !form_hash["utf8"] end
was_xhr_request?(env)
click to toggle source
# File lib/facebook_canvas/middleware.rb, line 74 def was_xhr_request?(env) env['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' end