Sha256: e4b851f0c89202706c241c0f566878ea08949195a602e783e360b3a4b5f213d3

Contents?: true

Size: 671 Bytes

Versions: 4

Compression:

Stored size: 671 Bytes

Contents

require 'dav4rack/interceptor_resource'
module DAV4Rack
  class Interceptor
    def initialize(app, args={})
      @roots = args[:mappings].keys
      @args = args
      @app = app
    end

    def call(env)
      path = env['PATH_INFO'].downcase
      method = env['REQUEST_METHOD'].upcase
      app = nil
      if(@roots.detect{|x| path =~ /^#{Regexp.escape(x.downcase)}\/?/}.nil? && %w(OPTIONS PUT PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK).include?(method))
        app = DAV4Rack::Handler.new(:resource_class => InterceptorResource, :mappings => @args[:mappings], :log_to => @args[:log_to])
      end
      app ? app.call(env) : @app.call(env)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dav4rack-0.1.4 lib/dav4rack/interceptor.rb
dav4rack-0.1.3 lib/dav4rack/interceptor.rb
dav4rack-0.1.2 lib/dav4rack/interceptor.rb
dav4rack-0.1.1 lib/dav4rack/interceptor.rb