Sha256: 793651100b50edc7c5f15f22c80207bcaf9e004cd7bec50ac81f2426c09757ef

Contents?: true

Size: 1.45 KB

Versions: 2

Compression:

Stored size: 1.45 KB

Contents

# coding: utf-8
#
# This monkey patches http_router to make it Rack 2.0 compatible.
# Details see: https://github.com/hanami/router/issues/136
#
class HttpRouter
  class Node
    class Path < Node
      def to_code
        path_ivar = inject_root_ivar(self)
        "#{"if !callback && request.path.size == 1 && request.path.first == '' && (request.rack_request.head? || request.rack_request.get?) && request.rack_request.path_info[-1] == ?/
          response = ::Rack::Response.new
          response.redirect(request.rack_request.path_info[0, request.rack_request.path_info.size - 1], 302)
          return response.finish
        end" if router.redirect_trailing_slash?}

        #{"if request.#{router.ignore_trailing_slash? ? 'path_finished?' : 'path.empty?'}" unless route.match_partially}
          if callback
            request.called = true
            callback.call(Response.new(request, #{path_ivar}))
          else
            env = request.rack_request.env
            env['router.request'] = request
            env['router.params'] ||= {}
            #{"env['router.params'].merge!(Hash[#{param_names.inspect}.zip(request.params)])" if dynamic?}
            @router.rewrite#{"_partial" if route.match_partially}_path_info(env, request)
            response = @router.process_destination_path(#{path_ivar}, env)
            return response unless router.pass_on_response(response)
          end
        #{"end" unless route.match_partially}"
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hanami-router-1.0.0.beta2 lib/hanami/routing/http_router_monkey_patch.rb
hanami-router-1.0.0.beta1 lib/hanami/routing/http_router_monkey_patch.rb