36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/whisper/handler.rb', line 36
def handle path, params, request_method, route
return unless (request_method == @request_method) ||
(request_method == :head && @request_method == :get)
match = @re.match(path) or return
vars = match.captures
vars[vars.length - 1] ||= DEFAULT_FORMAT if @uses_format
vars[vars.length - 2] = (vars[vars.length - 2].to_i || 0) if @uses_page
vars << params
key = path + "?" + params.sort_by { |k, v| [k, v] }.map { |k, v| k + "=" + v }.join("&")
case request_method
when :post
make route, vars
else
@map.prune!
@map[key] ||= begin
make(route, vars) || :invalid
rescue SystemCallError => e
:invalid
end
end
end
|