Exemplo n.º 1
0
 /**                         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;
 }
Exemplo n.º 2
0
 public function testRqlDecoder()
 {
     $queryObject = RqlParser::rqlDecode($this->rqlString);
     $this->assertTrue(isset($queryObject));
     $this->assertEquals($this->queryObject, $queryObject);
 }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
//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>');