refactoring
[sinatra.git] / lib / sinatra / dispatcher.rb
blob3f9e996b9ebf3dc9b3f43efa97eaeccb9ee0b277
1 module Sinatra
2   
3   DEFAULT_HEADERS = { 'Content-Type' => 'text/html' }
4   
5   class Dispatcher
7     cattr_accessor :logger
8         
9     def headers
10       DEFAULT_HEADERS
11     end
13     def call(env)
14       @request = Rack::Request.new(env)
15       
16       event = EventManager.determine_event(
17         @request.request_method.downcase.intern, 
18         @request.path_info
19       )
20       
21       result = event.attend(@request)
22       [result.status, headers.merge(result.headers), result.body]
23     rescue => e
24       logger.exception e
25     end
26     
27   end
28   
29 end