/** * Create a permessage-deflate extension using the settings specified in the given header token. * * @param HeaderToken $token * @return PerMessageDeflate * * @throws \OutOfRangeException When the compression / decompression window exponent is not between 8 and 15. */ public static function fromHeaderToken(HeaderToken $token) : PerMessageDeflate { $compressionTakeover = $token->getParam('client_no_context_takeover', true) ? true : false; $decompressionTakeover = $token->getParam('server_no_context_takeover', true) ? true : false; $compressionWindow = (int) $token->getParam('client_max_window_bits', 15); $decompressionWindow = (int) $token->getParam('server_max_window_bits', 15); if ($compressionWindow < 8 || $compressionWindow > 15) { throw new \OutOfRangeException(\sprintf('Client window size must be between 8 and 15, given %s', $compressionWindow)); } if ($decompressionWindow < 8 || $decompressionWindow > 15) { throw new \OutOfRangeException(\sprintf('Server window size must be between 8 and 15, given %s', $decompressionWindow)); } return new PerMessageDeflate($compressionTakeover, $decompressionTakeover, $compressionWindow, $decompressionWindow); }
/** * Create a new content type. * * @param string $type * @param array $params */ public function __construct($type, array $params = []) { parent::__construct((string) $type, $params); $this->value = new MediaType($type); }
public function getHeaderTokens(string $name, string $separator = ',') : array { return HeaderToken::parseList($this->getHeaderLine($name, $separator), $separator); }