Sha256: df7ab565b417592b2fb0b18a601bf47f84c707376b449a0afda835866217449a

Contents?: true

Size: 845 Bytes

Versions: 3

Compression:

Stored size: 845 Bytes

Contents

module RackDAV
  
  class Handler
    
    def initialize(options={})
      @options = {
        :resource_class => FileResource,
        :root => Dir.pwd
      }.merge(options)
    end

    def call(env)
      request = Rack::Request.new(env)
      response = Rack::Response.new

      begin
        controller = Controller.new(request, response, @options.dup)
        controller.send(request.request_method.downcase)
        
      rescue HTTPStatus::Status => status
        response.status = status.code
      end
      
      # Strings in Ruby 1.9 are no longer enumerable.  Rack still expects the response.body to be
      # enumerable, however.
      response.body = [response.body] if not response.body.respond_to? :each

      response.status = response.status ? response.status.to_i : 200
      response.finish
    end
    
  end

end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
georgi-rack_dav-0.1.1 lib/rack_dav/handler.rb
rack_dav-0.1.3 lib/rack_dav/handler.rb
rack_dav-0.1.2 lib/rack_dav/handler.rb