Sha256: 7e390e149991d30c50b5b037e0916472d5fc191bd9568e2ba25c63909ac2911c

Contents?: true

Size: 1.08 KB

Versions: 15

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

# :markup: markdown

module ActionDispatch
  module Http
    module FilterRedirect
      FILTERED = "[FILTERED]" # :nodoc:

      def filtered_location # :nodoc:
        if location_filter_match?
          FILTERED
        else
          parameter_filtered_location
        end
      end

    private
      def location_filters
        if request
          request.get_header("action_dispatch.redirect_filter") || []
        else
          []
        end
      end

      def location_filter_match?
        location_filters.any? do |filter|
          if String === filter
            location.include?(filter)
          elsif Regexp === filter
            location.match?(filter)
          end
        end
      end

      def parameter_filtered_location
        uri = URI.parse(location)
        unless uri.query.nil? || uri.query.empty?
          uri.query.gsub!(FilterParameters::PAIR_RE) do
            request.parameter_filter.filter($1 => $2).first.join("=")
          end
        end
        uri.to_s
      rescue URI::Error
        FILTERED
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
actionpack-8.0.0.rc1 lib/action_dispatch/http/filter_redirect.rb
actionpack-8.0.0.beta1 lib/action_dispatch/http/filter_redirect.rb
omg-actionpack-8.0.0.alpha9 lib/action_dispatch/http/filter_redirect.rb
omg-actionpack-8.0.0.alpha8 lib/action_dispatch/http/filter_redirect.rb
omg-actionpack-8.0.0.alpha7 lib/action_dispatch/http/filter_redirect.rb
omg-actionpack-8.0.0.alpha4 lib/action_dispatch/http/filter_redirect.rb
omg-actionpack-8.0.0.alpha3 lib/action_dispatch/http/filter_redirect.rb
omg-actionpack-8.0.0.alpha2 lib/action_dispatch/http/filter_redirect.rb
omg-actionpack-8.0.0.alpha1 lib/action_dispatch/http/filter_redirect.rb
actionpack-7.2.1 lib/action_dispatch/http/filter_redirect.rb
actionpack-7.2.0 lib/action_dispatch/http/filter_redirect.rb
actionpack-7.2.0.rc1 lib/action_dispatch/http/filter_redirect.rb
actionpack-7.2.0.beta3 lib/action_dispatch/http/filter_redirect.rb
actionpack-7.2.0.beta2 lib/action_dispatch/http/filter_redirect.rb
actionpack-7.2.0.beta1 lib/action_dispatch/http/filter_redirect.rb