예제 #1
0
 /**
  * @inheritdoc
  */
 public function parse(ServerRequestInterface $request)
 {
     $acceptHeader = null;
     $contentTypeHeader = null;
     $method = $request->getMethod();
     try {
         $header = $this->getHeader($request, HeaderInterface::HEADER_CONTENT_TYPE);
         $contentTypeHeader = Header::parse($header, HeaderInterface::HEADER_CONTENT_TYPE);
     } catch (InvalidArgumentException $exception) {
         E::throwException(new E([], E::HTTP_CODE_BAD_REQUEST, $exception));
     }
     try {
         $header = $this->getHeader($request, HeaderInterface::HEADER_ACCEPT);
         $acceptHeader = AcceptHeader::parse($header);
     } catch (InvalidArgumentException $exception) {
         E::throwException(new E([], E::HTTP_CODE_BAD_REQUEST, $exception));
     }
     return $this->factory->createHeaderParameters($method, $acceptHeader, $contentTypeHeader);
 }
예제 #2
0
 /**
  * @param array $parameters
  *
  * @return SortParameterInterface[]|null
  */
 protected function getSortParameters(array $parameters)
 {
     $sortParams = null;
     $sortParam = $this->getStringParamOrNull($parameters, self::PARAM_SORT);
     if ($sortParam !== null) {
         foreach (explode(',', $sortParam) as $param) {
             $isDesc = false;
             empty($param) === false ? $isDesc = $param[0] === '-' : E::throwException(new E([], E::HTTP_CODE_BAD_REQUEST));
             $sortField = ltrim($param, '+-');
             empty($sortField) === false ?: E::throwException(new E([], E::HTTP_CODE_BAD_REQUEST));
             $sortParams[] = $this->factory->createSortParam($sortField, $isDesc === false);
         }
     }
     return $sortParams;
 }
 /**
  * @param HttpFactoryInterface $factory
  * @param EncodingParametersInterface $parameters
  * @param ApiInterface $api
  * @throws JsonApiException
  */
 private function checkEncodingParameters(HttpFactoryInterface $factory, EncodingParametersInterface $parameters, ApiInterface $api)
 {
     $checker = $factory->createQueryChecker($this->allowUnrecognizedParameters(), $this->allowedIncludePaths(), $this->allowedFieldSetTypes(), $this->allowedSortParameters(), $this->allowedPagingParameters($api->getPagingStrategy()), $this->allowedFilteringParameters());
     $checker->checkQuery($parameters);
 }