Sha256: 2d0dccd7692f662f6c135f076074fbf36443873cbd8efbd8d1c9cdeb9244a8fc
Contents?: true
Size: 1.73 KB
Versions: 3
Compression:
Stored size: 1.73 KB
Contents
# frozen_string_literal: true module Hanami class Router # Represents a result of router path recognition. # # @since 0.5.0 # # @see Hanami::Router#recognize class RecognizedRoute def initialize(endpoint, env) @endpoint = endpoint @env = env end # Rack protocol compatibility # # @param env [Hash] Rack env # # @return [Array] serialized Rack response # # @raise [Hanami::Router::NotRoutableEndpointError] if not routable # # @since 0.5.0 # @api public # # @see Hanami::Router::RecognizedRoute#routable? # @see Hanami::Router::NotRoutableEndpointError def call(env) if routable? @endpoint.call(env) else raise NotRoutableEndpointError.new(@env) end end # HTTP verb (aka method) # # @return [String] # # @since 0.5.0 # @api public def verb @env[::Rack::REQUEST_METHOD] end # Relative URL (path) # # @return [String] # # @since 0.7.0 # @api public def path @env[::Rack::PATH_INFO] end # @since 0.7.0 # @api public def params @env[Router::PARAMS] end # @since 0.7.0 # @api public def endpoint return nil if redirect? @endpoint end # @since 0.7.0 # @api public def routable? !@endpoint.nil? end # @since 0.7.0 # @api public def redirect? @endpoint.is_a?(Redirect) end # @since 0.7.0 # @api public def redirection_path return nil unless redirect? @endpoint.destination end end end end
Version data entries
3 entries across 3 versions & 1 rubygems