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

Breadcrumb

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

function HttpCache::restoreResponseBody

Restores the Response body.

1 call to HttpCache::restoreResponseBody()
HttpCache::handle in vendor/symfony/http-kernel/HttpCache/HttpCache.php
Handles a Request to convert it to a Response.

File

vendor/symfony/http-kernel/HttpCache/HttpCache.php, line 623

Class

HttpCache
Cache provides HTTP caching.

Namespace

Symfony\Component\HttpKernel\HttpCache

Code

private function restoreResponseBody(Request $request, Response $response) : void {
    if ($response->headers
        ->has('X-Body-Eval')) {
        \assert(self::BODY_EVAL_BOUNDARY_LENGTH === 24);
        ob_start();
        $content = $response->getContent();
        $boundary = substr($content, 0, 24);
        $j = strpos($content, $boundary, 24);
        echo substr($content, 24, $j - 24);
        $i = $j + 24;
        while (false !== ($j = strpos($content, $boundary, $i))) {
            [
                $uri,
                $alt,
                $ignoreErrors,
                $part,
            ] = explode("\n", substr($content, $i, $j - $i), 4);
            $i = $j + 24;
            echo $this->surrogate
                ->handle($this, $uri, $alt, $ignoreErrors);
            echo $part;
        }
        $response->setContent(ob_get_clean());
        $response->headers
            ->remove('X-Body-Eval');
        if (!$response->headers
            ->has('Transfer-Encoding')) {
            $response->headers
                ->set('Content-Length', \strlen($response->getContent()));
        }
    }
    elseif ($response->headers
        ->has('X-Body-File')) {
        // Response does not include possibly dynamic content (ESI, SSI), so we need
        // not handle the content for HEAD requests
        if (!$request->isMethod('HEAD')) {
            $response->setContent(file_get_contents($response->headers
                ->get('X-Body-File')));
        }
    }
    else {
        return;
    }
    $response->headers
        ->remove('X-Body-File');
}

API Navigation

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