Class: BBServer::Router

Inherits:
Object
  • Object
show all
Defined in:
lib/bbserver/router.rb

Instance Method Summary collapse

Constructor Details

#initialize(routes) ⇒ Router

Returns a new instance of Router.



6
7
8
# File 'lib/bbserver/router.rb', line 6

def initialize(routes)
  @routes = routes
end

Instance Method Details

#match(request) ⇒ Object

Raises:



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/bbserver/router.rb', line 10

def match(request)
  path = request.instance_variable_get(:@env)["PATH_INFO"] || "/"
  method = request.instance_variable_get(:@env)["REQUEST_METHOD"] || "GET"
  
  route, params = find_route(path, method)
  
  raise RouteNotFoundError, "No route found for #{method} #{path}" unless route
  
  handler_class = route.handler_proc.call
  stack = ExecutionStack.new(handler_class, route.middlewares)
  
  [stack, Params.new(params || {})]
end