Sha256: a4b16e34167de48be16c7405345f0fab7356a9ef0c5c42f284b9ef09bddec4df

Contents?: true

Size: 1.06 KB

Versions: 11

Compression:

Stored size: 1.06 KB

Contents

module Unpoly
  module Rails
    ##
    # Installs a `before_action` into all controllers which echoes the
    # request's URL as a response header `X-Up-Location` and the request's
    # HTTP method as `X-Up-Method`.
    #
    # The Unpoly frontend requires these headers to detect redirects,
    # which are otherwise undetectable for an AJAX client.
    module RequestEchoHeaders

      def self.included(base)
        if base.respond_to?(:before_action)
          base.before_action :set_up_request_echo_headers
        else
          base.before_filter :set_up_request_echo_headers
        end
      end

      private

      def set_up_request_echo_headers
        request_url_without_up_params = up.request_url_without_up_params
        unless request_url_without_up_params == request.original_url
          response.headers['X-Up-Location'] = up.request_url_without_up_params
        end

        response.headers['X-Up-Method'] = request.method
      end

    end
  end
end

ActiveSupport.on_load(:action_controller_base) do
  include Unpoly::Rails::RequestEchoHeaders
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
unpoly-rails-3.10.2 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.10.0 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.10.0.rc1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.9.5 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.9.3.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.9.3 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.9.2.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.9.2 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.9.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.9.0 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.8.0.1 lib/unpoly/rails/request_echo_headers.rb