/** * Parses the UNLOCK request and returns a request object. * * This method is responsible for parsing the UNLOCK 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 * ezcWebdavUnlockRequest} object. * * This method may be overwritten to adjust it to special client behaviour. * * @param string $path * @param string $body * @return ezcWebdavUnlockRequest */ protected function parseUnlockRequest($path, $body) { $request = new ezcWebdavUnlockRequest($path); $request->setHeaders(ezcWebdavServer::getInstance()->headerHandler->parseHeaders()); $request->setHeader('Lock-Token', $this->headerHandler->parseLockTokenHeader()); return $request; }
/** * Callback for the hook ezcWebdavServer::receivedRequest(). * * Parameters are: * - ezcWebdavRequest request * * Needs to react directly on: * - ezcWebdavLockRequest * - ezcWebdavUnlockRequest * * Needs to check if lock violations occur on: * - ezcWebdavCopyRequest * - ezcWebdavMoveRequest * - ezcWebdavMakeCollectionRequest * - ezcWebdavPropPatchRequest * - ezcWebdavPutRequest * * @param ezcWebdavPluginParameters $params * @return ezcWebdavResponse|null */ public function receivedRequest(ezcWebdavPluginParameters $params) { $request = $params['request']; $requestClass = get_class($request); if (isset(ezcWebdavLockPlugin::$requestHandlingMap[$requestClass])) { // Set headers parsed by the lock plugin only. $request->setHeader('If', $this->headerHandler->parseIfHeader($request)); $request->setHeader('Timeout', $this->headerHandler->parseTimeoutHeader($request)); $request->setHeader('Lock-Token', $this->headerHandler->parseLockTokenHeader($request)); $request->validateHeaders(); $handlerClass = ezcWebdavLockPlugin::$requestHandlingMap[$requestClass]; $this->handler = new $handlerClass(new ezcWebdavLockTools($this->options)); if ($this->handler->needsBackendLock) { ezcWebdavServer::getInstance()->backend->lock($this->options->backendLockWaitTime, $this->options->backendLockTimeout); } $res = null; try { $res = $this->handler->receivedRequest($request); } catch (Exception $e) { if ($this->handler->needsBackendLock) { ezcWebdavServer::getInstance()->backend->unlock(); } throw $e; } return $res; } // return null }
/** * testParseTimeoutHeader * * @param mixed $content * @param mixed $result * @return void * * @dataProvider provideTimeoutHeaderData */ public function testParseTimeoutHeader($content, $result) { $_SERVER['HTTP_TIMEOUT'] = $content; $handler = new ezcWebdavLockHeaderHandler(); $this->assertEquals($result, $handler->parseTimeoutHeader()); }