lib/deas/route.rb in deas-0.31.0 vs lib/deas/route.rb in deas-0.32.0

- old
+ new

@@ -1,40 +1,30 @@ -require 'deas/sinatra_runner' +require 'deas/exceptions' module Deas class Route - attr_reader :method, :path, :route_proxy, :handler_class + attr_reader :method, :path, :handler_proxies - def initialize(method, path, route_proxy) - @method, @path, @route_proxy = method, path, route_proxy + def initialize(method, path, handler_proxies) + @method, @path, @handler_proxies = method, path, handler_proxies end def validate! - @route_proxy.validate! - @handler_class = @route_proxy.handler_class + @handler_proxies.each do |request_type_name, proxy| + proxy.validate! + end end def run(sinatra_call) - runner = SinatraRunner.new(self.handler_class, { - :sinatra_call => sinatra_call, - :request => sinatra_call.request, - :response => sinatra_call.response, - :session => sinatra_call.session, - :params => sinatra_call.params, - :logger => sinatra_call.settings.logger, - :router => sinatra_call.settings.router, - :template_source => sinatra_call.settings.template_source - }) - - sinatra_call.request.env.tap do |env| - env['deas.params'] = runner.params - env['deas.handler_class_name'] = self.handler_class.name - env['deas.logging'].call " Handler: #{env['deas.handler_class_name']}" - env['deas.logging'].call " Params: #{env['deas.params'].inspect}" + type = sinatra_call.settings.router.request_type_name(sinatra_call.request) + proxy = begin + @handler_proxies[type] + rescue HandlerProxyNotFound + sinatra_call.halt(404) end - runner.run + proxy.run(sinatra_call) end end end