class RackDAV::Handler

Constants

ALLOWED_METHODS

Attributes

options[R]

@return [Hash] The hash of options.

Public Class Methods

new(options = {}) click to toggle source

Initializes a new instance with given options.

@param [Hash] options Hash of options to customize the handler behavior. @option options [Class] :resource_class (FileResource)

The resource class.

@option options [String] :root (“.”)

The root resource folder.
# File lib/rack_dav/handler.rb, line 20
def initialize(options = {})
  @options = {
    :resource_class => FileResource,
    :root => Dir.pwd
  }.merge(options)
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack_dav/handler.rb, line 27
def call(env)
  request  = Rack::Request.new(env)
  response = Rack::Response.new

  begin
    controller = Controller.new(request, response, @options)
    if ALLOWED_METHODS.include?(request.request_method)
      controller.send(request.request_method.downcase)
    else
      response.status = 405
      response['Allow'] = ALLOWED_METHODS.join(', ')
    end

  rescue HTTPStatus::Status => status
    response.status = status.code
  end

  response.finish
end