/** * Serves GET requests. * * The method receives a {@link ezcWebdavGetRequest} object containing all * relevant information obout the clients request and will return an {@link * ezcWebdavErrorResponse} instance on error or an instance of {@link * ezcWebdavGetResourceResponse} or {@link ezcWebdavGetCollectionResponse} * on success, depending on the type of resource that is referenced by the * request. * * @param ezcWebdavGetRequest $request * @return ezcWebdavResponse */ public function get(ezcWebdavGetRequest $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); } // Verify If-[None-]Match headers if (($res = $this->checkIfMatchHeaders($request, $source)) !== null) { return $res; } $res = null; // Init if (!$this->isCollection($source)) { // Just deliver file $res = new ezcWebdavGetResourceResponse(new ezcWebdavResource($source, $this->getAllProperties($source), $this->getResourceContents($source))); } else { // Return collection with contained children $res = new ezcWebdavGetCollectionResponse(new ezcWebdavCollection($source, $this->getAllProperties($source), $this->getCollectionMembers($source))); } // Add ETag header $res->setHeader('ETag', $this->getETag($source)); // Deliver response return $res; }
/** * Serves GET requests. * * The method receives a {@link ezcWebdavGetRequest} object containing all * relevant information obout the clients request and will return an {@link * ezcWebdavErrorResponse} instance on error or an instance of {@link * ezcWebdavGetResourceResponse} or {@link ezcWebdavGetCollectionResponse} * on success, depending on the type of resource that is referenced by the * request. * * @param ezcWebdavGetRequest $request * @return ezcWebdavResponse */ public function get(ezcWebdavGetRequest $request) { $source = $request->requestUri; // Check authorization if (!ezcWebdavServer::getInstance()->isAuthorized($source, $request->getHeader('Authorization'))) { return $this->createUnauthorizedResponse($source, $request->getHeader('Authorization')); } try { // Check if resource is available if (!$this->nodeExists($source)) { return new ezcWebdavErrorResponse(ezcWebdavResponse::STATUS_404, $source); } } catch (Exception $e) { return new ezcWebdavErrorResponse(ezcWebdavResponse::STATUS_500, $source, $e->getMessage()); } // Verify If-[None-]Match headers if (($res = $this->checkIfMatchHeaders($request, $source)) !== null) { return $res; } $res = null; // Init if (!$this->isCollection($source)) { // Just deliver file $res = new ezcWebdavGetResourceResponse(new ezcWebdavResource($source, $this->getAllProperties($source))); $res->setHeader("AJXP-Send-File", $this->getAccessDriver()->getRessourceUrl($this->fixPath($source))); $res->setHeader("AJXP-Wrapper", $this->wrapperClassName); } else { // Return collection with contained children $res = new ezcWebdavGetCollectionResponse(new ezcWebdavCollection($source, $this->getAllProperties($source), $this->getCollectionMembers($source))); } // Add ETag header $res->setHeader('ETag', $this->getETag($source)); // Deliver response return $res; }