class Tilia::Dav::Mount::Plugin
This plugin provides support for RFC4709: Mounting WebDAV servers
Simply append ?mount to any collection to generate the davmount response.
Public Instance Methods
dav_mount(response, uri)
click to toggle source
Generates the davmount response
@param ResponseInterface response @param string uri absolute uri @return void
# File lib/tilia/dav/mount/plugin.rb, line 50 def dav_mount(response, uri) response.status = 200 response.update_header('Content-Type', 'application/davmount+xml') body = "<?xml version=\"1.0\"?>\n" body << "<dm:mount xmlns:dm=\"http://purl.org/NET/webdav/mount\">\n" body << " <dm:url>#{CGI.escapeHTML(uri)}</dm:url>\n" body << '</dm:mount>' response.body = body end
http_get(request, response)
click to toggle source
'beforeMethod' event handles. This event handles intercepts GET requests ending with ?mount
@param RequestInterface request @param ResponseInterface response @return bool
# File lib/tilia/dav/mount/plugin.rb, line 30 def http_get(request, response) query_params = request.query_parameters return true unless query_params.include?('mount') current_uri = request.absolute_url # Stripping off everything after the ? current_uri = current_uri.split('?').first dav_mount(response, current_uri) # Returning false to break the event chain false end
setup(server)
click to toggle source
Initializes the plugin and registers event handles
@param DAVServer server @return void
# File lib/tilia/dav/mount/plugin.rb, line 19 def setup(server) @server = server @server.on('method:GET', method(:http_get), 90) end