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