/** * Stubbable method for creating a decoder instance * * @param string $stream * @param string $contentType * @param int $contentLength * @param \sndsgd\http\data\DecoderOptions $options * @return \sndsgd\http\data\decoder\DecoderInterface * @throws \sndsgd\http\exception\BadRequestException */ protected function getDecoder(string $stream, string $contentType, int $contentLength, decoder\DecoderOptions $options) { $type = \sndsgd\Str::before($contentType, ";"); if (!isset(static::$decoders[$type])) { throw new exception\BadRequestException("failed to decode request body; " . "unknown content-type '{$contentType}'"); } $class = static::$decoders[$type]; return new $class($stream, $contentType, $contentLength, $options); }
/** * {@inheritdoc} */ public function getContentType() : string { if ($this->contentType === null) { $header = strtolower($this->getHeader("content-type", "")); $this->contentType = \sndsgd\Str::before($header, ";"); } return $this->contentType; }