Exemplo n.º 1
0
 /**
  * Load JSON API configuration from controller annotations
  *
  * @param FilterControllerEvent $event
  */
 public function onKernelController(FilterControllerEvent $event)
 {
     $controller = $event->getController();
     if (!is_array($controller)) {
         return;
     }
     $config = null;
     $refClass = new \ReflectionClass($controller[0]);
     if (null !== ($annotation = $this->reader->getClassAnnotation($refClass, ApiRequest::class))) {
         /* @var $annotation ApiRequest */
         $config = $annotation->toArray();
     }
     $refMethod = $refClass->getMethod($controller[1]);
     if (null !== ($annotation = $this->reader->getMethodAnnotation($refMethod, ApiRequest::class))) {
         if (null !== $config) {
             $config = array_replace($config, $annotation->toArray());
         } else {
             $config = $annotation->toArray();
         }
     }
     if (null !== $config) {
         if (!array_key_exists('matcher', $config)) {
             $config['matcher'] = $this->defMatcher;
         }
         $event->getRequest()->attributes->set('_jsonapi', $this->factory->createEnvironment($config));
     }
 }
Exemplo n.º 2
0
 /**
  * Parse request query parameters
  *
  * @param Request $request
  * @param EnvironmentInterface $environment
  * @return \Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface|null
  */
 private function parseQuery(Request $request, EnvironmentInterface $environment)
 {
     if (null === $environment->getQueryType()) {
         return null;
     }
     $queryParser = $this->factory->createQueryParametersParser();
     if ($queryParser instanceof QueryParametersParserInterface) {
         $queryParser->setDataParser($this->parser)->setQueryType($environment->getQueryType());
     }
     return $queryParser->parse($this->createPsr7Request($request));
 }
Exemplo n.º 3
0
 /**
  * Returns schemas container
  *
  * @param FactoryInterface $factory
  * @return ContainerInterface
  */
 private function getContainer(FactoryInterface $factory)
 {
     if (null === $this->container) {
         $this->container = $factory->createContainer($this->getSchemas($factory));
     }
     return $this->container;
 }