Class: PathListener::Router

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/path_listener/router.rb

Instance Method Summary collapse

Instance Method Details

#append_to_ast(request_method, path, block) ⇒ Object



22
23
24
# File 'lib/path_listener/router.rb', line 22

def append_to_ast(request_method, path, block)
  ast << parse_to_nodes(request_method, path, block)
end

#call(env) ⇒ Object



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

def call(env)
  request_method = env['REQUEST_METHOD'].downcase
  path = env['REQUEST_PATH']
  memo = match(request_method, path)
  return if memo.nil?
  match_date = memo[:pattern].match(path)
  params = Rack::Utils.parse_nested_query(env['QUERY_STRING'])
  params.merge!(match_date.names.zip(match_date.captures).to_h)
  memo[:block] && memo[:block].call(ActiveSupport::HashWithIndifferentAccess.new(params))
rescue => _e
  nil
end