/** * test adding an item * * @return void */ public function testAddItem() { $header = new LinkHeader(array()); $item = new LinkHeaderItem('urn:uri'); $header->add($item); $links = $header->all(); $this->assertSame($item, $links[0]); }
/** * generate link header passed on params and type * * @param string $routeName use with router to generate urls * @param integer $page page to link to * @param integer $perPage number of items per page * @param string $type rel type of link to generate * @param array $additionalParams Optional array of additional params to include * * @return string */ private function generateLink($routeName, $page, $perPage, $type, $additionalParams = array()) { $parameters = array_merge($additionalParams, array('page' => $page)); if ($perPage) { $parameters['perPage'] = $perPage; } $url = $this->router->generate($routeName, $parameters, true); $this->linkHeader->add(new LinkHeaderItem($url, array('rel' => $type))); }
/** * generate link header passed on params and type * * @param string $routeName use with router to generate urls * @param integer $page page to link to * @param integer $perPage number of items per page * @param string $type rel type of link to generate * @param Request $request request to get rawRql from * @param string $rql rql query string * * @return string */ private function generateLink($routeName, $page, $perPage, $type, Request $request, $rql) { $limit = ''; if ($perPage) { $page = ($page - 1) * $perPage; $limit = sprintf('limit(%s,%s)', $perPage, $page); } if (strpos($rql, 'limit') !== false) { $rql = preg_replace('/limit\\(.*\\)/', $limit, $rql); } else { $rql = $limit; } $url = $this->getRqlUrl($request, $this->router->generate($routeName, [], true) . '?' . strtr($rql, [',' => '%2C'])); $this->linkHeader->add(new LinkHeaderItem($url, array('rel' => $type))); }
/** * Prepares the header field containing information about pagination. * * @return string */ protected function prepareLinkHeader() { $links = new LinkHeader(array()); $links->add(new LinkHeaderItem($this->router->generate('graviton.core.rest.app.all', array(), true), array('rel' => 'apps', 'type' => 'application/json'))); return (string) $links; }