/** * Parse request body if any * @return array|\Traversable * * @throws BadRequestException */ protected function parseRequestBody() { $requestBody = array(); $input = class_exists('Nette\\Framework') && Nette\Framework::VERSION_ID <= 20200 ? file_get_contents('php://input') : $this->httpRequest->getRawBody(); if ($input) { try { $this->mapper = $this->mapperContext->getMapper($this->httpRequest->getHeader('Content-Type')); $requestBody = $this->mapper->parse($input); } catch (InvalidStateException $e) { throw BadRequestException::unsupportedMediaType('No mapper defined for Content-Type ' . $this->httpRequest->getHeader('Content-Type'), $e); } catch (MappingException $e) { throw new BadRequestException($e->getMessage(), 400, $e); } } return $requestBody; }
/** * @param Http\Request $request * @return array */ private function parse(Http\IRequest $request) { $params = array_merge($request->getPost(), $request->getQuery()); if ($this->parser !== null) { $parsed = $this->parser->parse($request->getRawBody()); $params = array_merge($params, $parsed); } return $params; }
/** * @inheritdoc */ public function getRawBody() { return $this->current->getRawBody(); }