protected function AbstractMessageParser::getUrlPartsFromMessage

Create URL parts from HTTP message parts

Parameters

string $requestUrl Associated URL:

array $parts HTTP message parts:

Return value

array

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

File

drupal/core/vendor/guzzle/parser/Guzzle/Parser/Message/AbstractMessageParser.php, line 18

Class

AbstractMessageParser
Implements shared message parsing functionality

Namespace

Guzzle\Parser\Message

Code

protected function getUrlPartsFromMessage($requestUrl, array $parts) {

  // Parse the URL information from the message
  $urlParts = array(
    'path' => $requestUrl,
    'scheme' => 'http',
  );

  // Check for the Host header
  if (isset($parts['headers']['Host'])) {
    $urlParts['host'] = $parts['headers']['Host'];
  }
  elseif (isset($parts['headers']['host'])) {
    $urlParts['host'] = $parts['headers']['host'];
  }
  else {
    $urlParts['host'] = '';
  }
  if (false === strpos($urlParts['host'], ':')) {
    $urlParts['port'] = '';
  }
  else {
    $hostParts = explode(':', $urlParts['host']);
    $urlParts['host'] = trim($hostParts[0]);
    $urlParts['port'] = (int) trim($hostParts[1]);
    if ($urlParts['port'] == 443) {
      $urlParts['scheme'] = 'https';
    }
  }

  // Check if a query is present
  $path = $urlParts['path'];
  $qpos = strpos($path, '?');
  if ($qpos) {
    $urlParts['query'] = substr($path, $qpos + 1);
    $urlParts['path'] = substr($path, 0, $qpos);
  }
  else {
    $urlParts['query'] = '';
  }
  return $urlParts;
}