/**
  * 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);
 }
Example #2
0
 /**
  * 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);
 }
Example #3
0
 public function getHeaderTokens(string $name, string $separator = ',') : array
 {
     return HeaderToken::parseList($this->getHeaderLine($name, $separator), $separator);
 }