# frozen_string_literal: truerequire'sinatra/base'moduleSinatra# = Sinatra::WebDAV## This extensions provides WebDAV verbs, as defined by RFC 4918# (https://tools.ietf.org/html/rfc4918). To use this in your app,# just +register+ it:## require 'sinatra/base'# require 'sinatra/webdav'## class Application < Sinatra::Base# register Sinatra::WebDAV## # Now you can use any WebDAV verb:# propfind '/2014/january/21' do# 'I have a lunch at 9 PM'# end# end## You can use it in classic application just by requiring the extension:## require 'sinatra'# require 'sinatra/webdav'## mkcol '/2015' do# 'You started 2015!'# end#moduleWebDAVdefself.registered(_)Sinatra::Request.includeWebDAV::RequestendmoduleRequestdefself.included(base)base.class_evaldoalias_method:_safe?,:safe?alias_method:_idempotent?,:idempotent?defsafe?_safe?orpropfind?enddefidempotent?_idempotent?orpropfind?ormove?orunlock?# or lock?endendenddefpropfind?request_method=='PROPFIND'enddefproppatch?request_method=='PROPPATCH'enddefmkcol?request_method=='MKCOL'enddefcopy?request_method=='COPY'enddefmove?request_method=='MOVE'end# def lock?# request_method == 'LOCK'# enddefunlock?request_method=='UNLOCK'endenddefpropfind(path,opts={},&bk)route'PROPFIND',path,opts,&bkenddefproppatch(path,opts={},&bk)route'PROPPATCH',path,opts,&bkenddefmkcol(path,opts={},&bk)route'MKCOL',path,opts,&bkenddefcopy(path,opts={},&bk)route'COPY',path,opts,&bkenddefmove(path,opts={},&bk)route'MOVE',path,opts,&bkend# def lock(path, opts = {}, &bk) route 'LOCK', path, opts, &bk enddefunlock(path,opts={},&bk)route'UNLOCK',path,opts,&bkendendregisterWebDAVDelegator.delegate:propfind,:proppatch,:mkcol,:copy,:move,:unlock# :lockend