/** * Calculates hash * @param IInput $input * @return string * * @throws \Drahak\Restful\InvalidStateException */ public function calculate(IInput $input) { if (!$this->privateKey) { throw new InvalidStateException('Private key is not set'); } $dataString = $this->mapper->stringify($input->getData()); return hash_hmac(self::HASH, $dataString, $this->privateKey); }
/** * 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; }