コード例 #1
0
ファイル: LinkHeaderTest.php プロジェクト: ibrows/rest-bundle
 public function testAccessors()
 {
     $link = new LinkHeader('value');
     $urlParameters = ['foo' => 'bar'];
     $link->setUrlParameters($urlParameters);
     $resource = new \stdClass();
     $link->setResource($resource);
     $this->assertEquals($urlParameters, $link->getUrlParameters());
     $this->assertEquals($resource, $link->getResource());
 }
コード例 #2
0
 public function onKernelRequest(KernelEvent $event)
 {
     if (strtoupper($event->getRequest()->getMethod()) !== 'LINK' && strtoupper($event->getRequest()->getMethod()) !== 'UNLINK') {
         return;
     }
     if (!$event->getRequest()->headers->has('link')) {
         throw new BadRequestHttpException('Please specify at least one Link.');
     }
     $requestMethod = $this->urlMatcher->getContext()->getMethod();
     $this->urlMatcher->getContext()->setMethod('GET');
     $links = [];
     /*
      * Due to limitations, multiple same-name headers are sent as comma
      * separated values.
      *
      * This breaks those headers into Link headers following the format
      * http://tools.ietf.org/html/rfc2068#section-19.6.2.4
      */
     foreach (explode(',', $event->getRequest()->headers->get('link')) as $header) {
         $header = trim($header);
         $link = new LinkHeader($header);
         try {
             if ($urlParameters = $this->urlMatcher->match($link->getValue())) {
                 $link->setUrlParameters($urlParameters);
             }
         } catch (ResourceNotFoundException $exception) {
         }
         try {
             $link->setResource($this->resourceTransformer->getResourceProxy($link->getValue()));
         } catch (InvalidArgumentException $e) {
         }
         $links[] = $link;
     }
     $this->urlMatcher->getContext()->setMethod($requestMethod);
     $event->getRequest()->attributes->set('links', $links);
 }
コード例 #3
0
 /**
  * @param LinkHeader $link
  * @param array      $allowedRelations
  */
 protected function checkRelation(LinkHeader $link, array $allowedRelations)
 {
     if (!in_array($link->getRelation(), $allowedRelations)) {
         throw new BadRequestHttpException('Relation type "' . $link->getRelation() . '" is not allowed."');
     }
 }
コード例 #4
0
 private function createLinkHeader($definition, $resource)
 {
     $link = new LinkHeader($definition);
     $link->setResource($resource);
     return $link;
 }