class Rack::App::Router::Tree::Vein

Public Instance Methods

call(env) click to toggle source
# File lib/rack/app/router/tree/vein.rb, line 11
def call(env)
  app = app_by(env)
  app && app.call(env)
end
set(env) click to toggle source
# File lib/rack/app/router/tree/vein.rb, line 4
def set(env)
  app = create_app(env)
  request_methods(env).each do |request_method|
    self[request_method.to_s.upcase] = app
  end
end

Protected Instance Methods

app_by(env) click to toggle source
# File lib/rack/app/router/tree/vein.rb, line 18
def app_by(env)
  self[env[Rack::App::Constants::ENV::REQUEST_METHOD]]
end
create_app(env) click to toggle source
# File lib/rack/app/router/tree/vein.rb, line 22
def create_app(env)
  app = env.endpoint.to_app
  env.params.empty? ? app : wrap(app, env)
end
request_methods(env) click to toggle source
# File lib/rack/app/router/tree/vein.rb, line 34
def request_methods(env)
  request_method = env.endpoint.request_method
  case request_method || raise('missing config: request_methods')
  when Rack::App::Constants::HTTP::METHOD::ANY
    Rack::App::Constants::HTTP::METHODS
  else
    [request_method].flatten.map(&:to_sym)
  end
end
wrap(app, env) click to toggle source
# File lib/rack/app/router/tree/vein.rb, line 27
def wrap(app, env)
  builder = Rack::Builder.new
  builder.use(Rack::App::Middlewares::SetPathParams, env)
  builder.run(app)
  builder.to_app
end