class Grape::Router::Route

Attributes

app[R]
request_method[R]

Public Class Methods

new(method, pattern, **options) click to toggle source
Calls superclass method Grape::Router::BaseRoute::new
# File lib/grape/router/route.rb, line 12
def initialize(method, pattern, **options)
  @request_method = upcase_method(method)
  @pattern = Grape::Router::Pattern.new(pattern, **options)
  super(**options)
end

Public Instance Methods

apply(app) click to toggle source
# File lib/grape/router/route.rb, line 22
def apply(app)
  @app = app
  self
end
exec(env) click to toggle source
# File lib/grape/router/route.rb, line 18
def exec(env)
  @app.call(env)
end
match?(input) click to toggle source
# File lib/grape/router/route.rb, line 27
def match?(input)
  return false if input.blank?

  options[:forward_match] ? input.start_with?(pattern.origin) : pattern.match?(input)
end
params(input = nil) click to toggle source
# File lib/grape/router/route.rb, line 33
def params(input = nil)
  return params_without_input if input.blank?

  parsed = pattern.params(input)
  return {} unless parsed

  parsed.compact.symbolize_keys
end

Private Instance Methods

params_without_input() click to toggle source
# File lib/grape/router/route.rb, line 44
def params_without_input
  pattern.captures_default.merge(attributes.params)
end
upcase_method(method) click to toggle source
# File lib/grape/router/route.rb, line 48
def upcase_method(method)
  method_s = method.to_s
  Grape::Http::Headers::SUPPORTED_METHODS.detect { |m| m.casecmp(method_s).zero? } || method_s.upcase
end