Sha256: faa7e8f1d3a5c3dbe0df886fb6971fca3843f477b576f498635d27f07415e814

Contents?: true

Size: 1.01 KB

Versions: 27

Compression:

Stored size: 1.01 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

      ::ActionController::Base.send(:include, self)

    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
unpoly-rails-3.8.0 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.8.0.rc1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.7.3.2 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.7.3.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.7.3 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.7.2 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.7.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.7.0.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.7.0 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.6.1.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.6.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.6.0 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.5.2 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.5.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.5.0 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.3.0.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.3.0 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.2.2.1 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.2.2 lib/unpoly/rails/request_echo_headers.rb
unpoly-rails-3.2.1 lib/unpoly/rails/request_echo_headers.rb