Sha256: 59447b6d11980710691c77a5c647a478e8bc03d8925974ef2d095d8fcfb12af6

Contents?: true

Size: 748 Bytes

Versions: 72

Compression:

Stored size: 748 Bytes

Contents

# frozen-string-literal: true

#
class Roda
  module RodaPlugins
    # The unescape_path plugin decodes a URL-encoded path
    # before routing.  This fixes routing when the slashes
    # are URL-encoded as %2f and returns decoded parameters
    # when matched by symbols or regexps.
    #
    #   plugin :unescape_path
    #
    #   route do |r|
    #     # Assume /b/a URL encoded at %2f%62%2f%61
    #     r.on :x, /(.)/ do |*x|
    #       # x => ['b', 'a']
    #     end
    #   end
    module UnescapePath
      module RequestMethods
        private

        # Unescape the path.
        def _remaining_path(env)
          Rack::Utils.unescape(super)
        end
      end
    end

    register_plugin(:unescape_path, UnescapePath)
  end
end

Version data entries

72 entries across 72 versions & 1 rubygems

Version Path
roda-3.16.0 lib/roda/plugins/unescape_path.rb
roda-3.15.0 lib/roda/plugins/unescape_path.rb
roda-3.14.1 lib/roda/plugins/unescape_path.rb
roda-3.14.0 lib/roda/plugins/unescape_path.rb
roda-3.13.0 lib/roda/plugins/unescape_path.rb
roda-3.12.0 lib/roda/plugins/unescape_path.rb
roda-3.11.0 lib/roda/plugins/unescape_path.rb
roda-3.10.0 lib/roda/plugins/unescape_path.rb
roda-3.9.0 lib/roda/plugins/unescape_path.rb
roda-3.8.0 lib/roda/plugins/unescape_path.rb
roda-3.7.0 lib/roda/plugins/unescape_path.rb
roda-3.6.0 lib/roda/plugins/unescape_path.rb
roda-3.5.0 lib/roda/plugins/unescape_path.rb
roda-3.4.0 lib/roda/plugins/unescape_path.rb
roda-3.3.0 lib/roda/plugins/unescape_path.rb
roda-3.2.0 lib/roda/plugins/unescape_path.rb
roda-3.1.0 lib/roda/plugins/unescape_path.rb
roda-3.0.0 lib/roda/plugins/unescape_path.rb
roda-2.29.0 lib/roda/plugins/unescape_path.rb
roda-2.28.0 lib/roda/plugins/unescape_path.rb