protected function MessageParser::parseMessage

Parse a message into parts

Parameters

string $message Message to parse:

Return value

array

2 calls to MessageParser::parseMessage()
MessageParser::parseRequest in drupal/core/vendor/guzzle/parser/Guzzle/Parser/Message/MessageParser.php
Parse an HTTP request message into an associative array of parts.
MessageParser::parseResponse in drupal/core/vendor/guzzle/parser/Guzzle/Parser/Message/MessageParser.php
Parse an HTTP response message into an associative array of parts.

File

drupal/core/vendor/guzzle/parser/Guzzle/Parser/Message/MessageParser.php, line 73

Class

MessageParser
Default request and response parser used by Guzzle. Optimized for speed.

Namespace

Guzzle\Parser\Message

Code

protected function parseMessage($message) {
  $startLine = null;
  $headers = array();
  $body = '';

  // Iterate over each line in the message, accounting for line endings
  $lines = preg_split('/(\\r?\\n)/', $message, -1, PREG_SPLIT_DELIM_CAPTURE);
  for ($i = 0, $totalLines = count($lines); $i < $totalLines; $i += 2) {
    $line = $lines[$i];

    // If two line breaks were encountered, then this is the end of body
    if (empty($line)) {
      if ($i < $totalLines - 1) {
        $body = implode('', array_slice($lines, $i + 2));
      }
      break;
    }

    // Parse message headers
    if (!$startLine) {
      $startLine = explode(' ', $line, 3);
    }
    elseif (strpos($line, ':')) {
      $parts = explode(':', $line, 2);
      $key = trim($parts[0]);
      $value = isset($parts[1]) ? trim($parts[1]) : '';
      if (!isset($headers[$key])) {
        $headers[$key] = $value;
      }
      elseif (!is_array($headers[$key])) {
        $headers[$key] = array(
          $headers[$key],
          $value,
        );
      }
      else {
        $headers[$key][] = $value;
      }
    }
  }
  return array(
    'start_line' => $startLine,
    'headers' => $headers,
    'body' => $body,
  );
}