Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Psr17Factory.php

function Psr17Factory::buildServerRequestFromGlobals

File

vendor/php-http/discovery/src/Psr17Factory.php, line 180

Class

Psr17Factory
A generic PSR-17 implementation.

Namespace

Http\Discovery

Code

private function buildServerRequestFromGlobals(ServerRequestInterface $request, array $server, array $files) : ServerRequestInterface {
    $request = $request->withProtocolVersion(isset($server['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $server['SERVER_PROTOCOL']) : '1.1')
        ->withUploadedFiles($this->normalizeFiles($files));
    $headers = [];
    foreach ($server as $k => $v) {
        if (0 === strpos($k, 'HTTP_')) {
            $k = substr($k, 5);
        }
        elseif (!\in_array($k, [
            'CONTENT_TYPE',
            'CONTENT_LENGTH',
            'CONTENT_MD5',
        ], true)) {
            continue;
        }
        $k = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $k))));
        $headers[$k] = $v;
    }
    if (!isset($headers['Authorization'])) {
        if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
            $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
        }
        elseif (isset($_SERVER['PHP_AUTH_USER'])) {
            $headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . ($_SERVER['PHP_AUTH_PW'] ?? ''));
        }
        elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) {
            $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST'];
        }
    }
    foreach ($headers as $k => $v) {
        try {
            $request = $request->withHeader($k, $v);
        } catch (\InvalidArgumentException $e) {
            // ignore invalid headers
        }
    }
    return $request;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal