/** Location: http://www.example.com/users/4/ * * @todo positionHeaders = 'beforeId' 'Put-Default-Position' 'Put-Default-Position' * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable|null $next * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next = null) { // @see https://github.com/SitePen/dstore/blob/21129125823a29c6c18533e7b5a31432cf6e5c56/src/Rest.js $overwriteModeHeader = $request->getHeader('If-Match'); $overwriteMode = isset($overwriteModeHeader[0]) && $overwriteModeHeader[0] === '*' ? true : false; $request = $request->withAttribute('Overwrite-Mode', $overwriteMode); $putDefaultPosition = $request->getHeader('Put-Default-Position'); //'start' : 'end' if (isset($putDefaultPosition)) { $request = $request->withAttribute('Put-Default-Position', $putDefaultPosition); } // @see https://github.com/SitePen/dstore/issues/42 $putBeforeHeader = $request->getHeader('Put-Before'); $putBefore = !empty($putBeforeHeader); $request = $request->withAttribute('Put-Before', $putBefore); $rqlQueryStringWithXdebug = $request->getUri()->getQuery(); $rqlQueryString = rtrim($rqlQueryStringWithXdebug, '&XDEBUG_SESSION_START=netbeans-xdebug'); $rqlQueryObject = RqlParser::rqlDecode($rqlQueryString); $request = $request->withAttribute('Rql-Query-Object', $rqlQueryObject); $headerLimit = $request->getHeader('Range'); if (isset($headerLimit) && is_array($headerLimit) && count($headerLimit) > 0) { $match = []; preg_match("/^items=([0-9]+)\\-?([0-9]+)?/", $headerLimit[0], $match); if (count($match) > 0) { $limit = []; if (isset($match[2])) { $limit['offset'] = $match[1]; $limit['limit'] = $match[2]; } else { $limit['limit'] = $match[1]; } $request = $request->withAttribute("Limit", $limit); } } $contenttypeArray = $request->getHeader('Content-Type'); $contenttype = isset($contenttypeArray[0]) ? $contenttypeArray[0] : 'text/html'; if (false !== strpos($contenttype, 'json')) { $body = !empty($request->getBody()->__toString()) ? $this->jsonDecode($request->getBody()->__toString()) : null; $request = $request->withParsedBody($body); } elseif ($contenttype === 'text/plain' or $contenttype === 'text/html' or $contenttype === 'application/x-www-form-urlencoded') { $body = !empty($request->getBody()->__toString()) ? $request->getBody()->__toString() : null; $request = $request->withParsedBody($body); } else { //todo XML? throw new RestException('Unknown Content-Type header - ' . $contenttype); } if ($next) { return $next($request, $response); } return $response; }
public function testRqlDecoder() { $queryObject = RqlParser::rqlDecode($this->rqlString); $this->assertTrue(isset($queryObject)); $this->assertEquals($this->queryObject, $queryObject); }
protected function methodPatchWithId(Request $request, Response $response) { $cdsId = $request->getAttribute('Primary-Key-Value'); $cdsConf = $this->getCdsConf($cdsId); if (empty($cdsConf)) { throw new \Exception("this cds id not found"); } if ($cdsConf['query'] !== '') { $query = RqlParser::rqlDecode($cdsConf['query']); } else { $query = new Query(); } $data = $this->getData($cdsConf['script_name'], $query); $query = new Query(); $query->setQuery(new EqNode('cds_id', $cdsId)); $items = $this->cds->query($query); foreach ($items as $item) { $this->cds->delete($item['id']); } foreach ($data as &$item) { $item['cds_id'] = $cdsId; $item['data_id'] = $item['id']; unset($item['id']); } $this->cds->create($data); $this->cdsManagerStore->update(['id' => $cdsConf['id'], 'freshness_date' => (new \DateTime())->format("Y-m-d H:i:s")]); $request = $request->withAttribute('CDS-ID', $cdsId); $request = $request->withAttribute('Response-Body', ['cdsId' => $cdsId]); $response = $response->withStatus(200); return array($request, $response); }
//foreach ($list as $value) { // // $dataStore->addMessageId($value); //} //exit; //$list = $apiGmail->queryMessagesList(); //$list = $apiGmail->getMessagesList(); //$list = $apiGmail->queryMessagesList(); //$rqlQueryString = 'select(id)'; //$query = RqlParser::rqlDecode($rqlQueryString); //$listStore = $dataStore->query($query); //array_diff() //D:\OpenServer\modules\wget\bin\wget.exe -q --no-cache http://zaboy-utils/index.php //var_dump($apiGmail->getBodyTxt($list[8])); $i = 0; $rqlQueryString = 'eq(sending_time,null)&limit(50)'; $query = RqlParser::rqlDecode($rqlQueryString); $nextItems = $dataStore->query($query); foreach ($nextItems as $value) { //$i = $i + 1; $id = $value["id"]; $dataStore->addMessageData($id); echo $id . ' <br> '; // if (round($i / 100) === $i / 100) { // echo $i . ' <br> '; // } } exit; //$dataStore->addMessage($list[0]); // Create a DOM object from a string //$htmlParserSimple = new HtmlParserSimple; //$html = HtmlParserSimple::strGetHtml('<html><body>Hello!</body></html>');