Module: Facepalm::Rails::Controller::UrlRewriting

Defined in:
lib/facepalm/rails/controller/url_rewriting.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



5
6
7
8
9
10
11
# File 'lib/facepalm/rails/controller/url_rewriting.rb', line 5

def self.included(base)
  base.class_eval do
    alias_method_chain :url_for, :facepalm

    helper_method(:facebook_canvas_page_url, :facebook_callback_url)
  end
end

Instance Method Details

#facebook_callback_url(protocol = nil) ⇒ Object

A helper to generate an application callback URL

Parameters:

  • protocol (defaults to: nil)

    A request protocol, should be either ‘http://’ or ‘https://’. Defaults to current protocol.



25
26
27
# File 'lib/facepalm/rails/controller/url_rewriting.rb', line 25

def facebook_callback_url(protocol = nil)
  facepalm.callback_url(protocol || request.protocol)
end

#facebook_canvas_page_url(protocol = nil) ⇒ Object

A helper to generate an URL of the application canvas page URL

Parameters:

  • protocol (defaults to: nil)

    A request protocol, should be either ‘http://’ or ‘https://’. Defaults to current protocol.



17
18
19
# File 'lib/facepalm/rails/controller/url_rewriting.rb', line 17

def facebook_canvas_page_url(protocol = nil)
  facepalm.canvas_page_url(protocol || request.protocol)
end

#url_for_with_facepalm(options = {}) ⇒ Object

Overrides ActionController::Base#urs_for to filter out secure Facebook params and add Facebook Canvas URL if necessary



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/facepalm/rails/controller/url_rewriting.rb', line 31

def url_for_with_facepalm(options = {})
  if options.is_a?(Hash)
    if options.delete(:canvas) && !options[:host]
      options[:only_path] = true

      canvas = true
    else
      canvas = false
    end

    url = url_for_without_facepalm(options.except(:signed_request))

    canvas ? facebook_canvas_page_url + url : url
  else
    url_for_without_facepalm(options)
  end
end