server = $server; $this->server->on('method:GET', [$this, 'httpGet'], 90); } /** * 'beforeMethod' event handles. This event handles intercepts GET requests ending * with ?mount * * @param RequestInterface $request * @param ResponseInterface $response * @return bool */ function httpGet(RequestInterface $request, ResponseInterface $response) { $queryParams = $request->getQueryParameters(); if (!array_key_exists('mount', $queryParams)) return; $currentUri = $request->getAbsoluteUrl(); // Stripping off everything after the ? list($currentUri) = explode('?', $currentUri); $this->davMount($response, $currentUri); // Returning false to break the event chain return false; } /** * Generates the davmount response * * @param ResponseInterface $response * @param string $uri absolute uri * @return void */ function davMount(ResponseInterface $response, $uri) { $response->setStatus(200); $response->setHeader('Content-Type', 'application/davmount+xml'); ob_start(); echo '', "\n"; echo "\n"; echo " ", htmlspecialchars($uri, ENT_NOQUOTES, 'UTF-8'), "\n"; echo ""; $response->setBody(ob_get_clean()); } }