/** * Serves HEAD requests. * * The method receives a {@link ezcWebdavHeadRequest} object containing all * relevant information obout the clients request and will return an {@link * ezcWebdavErrorResponse} instance on error or an instance of {@link * ezcWebdavHeadResponse} on success. * * @param ezcWebdavHeadRequest $request * @return ezcWebdavResponse */ public function head(ezcWebdavHeadRequest $request) { $source = $request->requestUri; // Check authorization if (!ezcWebdavServer::getInstance()->isAuthorized($source, $request->getHeader('Authorization'))) { return $this->createUnauthorizedResponse($source, $request->getHeader('Authorization')); } // Check if resource is available if (!$this->nodeExists($source)) { return new ezcWebdavErrorResponse(ezcWebdavResponse::STATUS_404, $source); } $res = null; // Init if (!$this->isCollection($source)) { // Just deliver file without contents $res = new ezcWebdavHeadResponse(new ezcWebdavResource($source, $this->getAllProperties($source))); } else { // Just deliver collection without children $res = new ezcWebdavHeadResponse(new ezcWebdavCollection($source, $this->getAllProperties($source))); } // Add ETag header $res->setHeader('ETag', $this->getETag($source)); // Deliver response return $res; }