public function testHeadCollectionETagHeader() { $testPath = '/collection/'; $backend = new ezcWebdavFileBackend($this->tempDir . 'backend/'); $etag = $backend->getProperty($testPath, 'getetag')->etag; $req = new ezcWebdavHeadRequest($testPath); $req->validateHeaders(); $res = $backend->head($req); $expectedRes = new ezcWebdavHeadResponse(new ezcWebdavCollection($testPath, $backend->getAllProperties($testPath))); $expectedRes->setHeader('ETag', $etag); $this->assertEquals($expectedRes, $res, 'Expected response does not match real response.', 0, 20); }
public function testResourceHeadError() { $backend = new ezcWebdavMemoryBackend(false); $backend->addContents(array('foo' => 'bar', 'bar' => array('blubb' => 'Somme blubb blubbs.'))); $request = new ezcWebdavHeadRequest('/unknown'); $request->validateHeaders(); $response = $backend->head($request); $this->assertEquals(new ezcWebdavErrorResponse(ezcWebdavResponse::STATUS_404, '/unknown'), $response, 'Expected response does not match real response.', 0, 20); }
/** * 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; }
public function testResourceHeadError() { $backend = new ezcWebdavFileBackend($this->tempDir . 'backend/'); $request = new ezcWebdavHeadRequest('/unknown'); $request->validateHeaders(); $response = $backend->head($request); $this->assertEquals($response, new ezcWebdavErrorResponse(ezcWebdavResponse::STATUS_404, '/unknown'), 'Expected response does not match real response.', 0, 20); }
/** * Parses the HEAD request and returns a request object. * * This method is responsible for parsing the HEAD request. It retrieves * the current request URI in $path and the request body as $body. The * return value, if no exception is thrown, is a valid {@link * ezcWebdavHeadRequest} object. * * This method may be overwritten to adjust it to special client behaviour. * * @param string $path * @param string $body * @return ezcWebdavHeadRequest */ protected function parseHeadRequest($path, $body) { $req = new ezcWebdavHeadRequest($path); $req->setHeaders(ezcWebdavServer::getInstance()->headerHandler->parseHeaders()); return $req; }