Esempio n. 1
0
 /**
  * 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;
 }