Amp\Artax\Parser::parseHeadersFromRaw PHP Method

parseHeadersFromRaw() private method

private parseHeadersFromRaw ( $rawHeaders )
    private function parseHeadersFromRaw($rawHeaders)
    {
        if (strpos($rawHeaders, "\n ") || strpos($rawHeaders, "\n\t")) {
            $rawHeaders = preg_replace("/(?:\r\n|\n)[ \t]+/", ' ', $rawHeaders);
        }
        if (!preg_match_all(self::HEADERS_PATTERN, $rawHeaders, $matches)) {
            throw new ParseException($this->getParsedMessageArray(), $msg = 'Invalid headers', $code = 400, $previousException = null);
        }
        $headers = [];
        $aggregateMatchedHeaders = '';
        for ($i = 0, $c = count($matches[0]); $i < $c; $i++) {
            $aggregateMatchedHeaders .= $matches[0][$i];
            $field = $matches['field'][$i];
            $headers[$field][] = $matches['value'][$i];
        }
        if (strlen($rawHeaders) !== strlen($aggregateMatchedHeaders)) {
            throw new ParseException($this->getParsedMessageArray(), $msg = 'Invalid headers', $code = 400, $previousException = null);
        }
        $ucKeyHeaders = array_change_key_case($headers, CASE_UPPER);
        if (isset($ucKeyHeaders['TRANSFER-ENCODING']) && strcasecmp('identity', $ucKeyHeaders['TRANSFER-ENCODING'][0])) {
            $this->parseFlowHeaders['TRANSFER-ENCODING'] = true;
        } elseif (isset($ucKeyHeaders['CONTENT-LENGTH'])) {
            $this->parseFlowHeaders['CONTENT-LENGTH'] = (int) $ucKeyHeaders['CONTENT-LENGTH'][0];
        }
        return $headers;
    }