getMimeType() публичный статический Метод

Return the mime type.
public static getMimeType ( Psr\Http\Message\ResponseInterface $response ) : string
$response Psr\Http\Message\ResponseInterface
Результат string
Пример #1
0
 /**
  * Execute the middleware.
  *
  * @param ServerRequestInterface $request
  * @param ResponseInterface      $response
  * @param callable               $next
  *
  * @return ResponseInterface
  */
 public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
 {
     if (!self::hasAttribute($request, ClientIp::KEY)) {
         throw new RuntimeException('Csrf middleware needs ClientIp executed before');
     }
     if (Utils\Helpers::getMimeType($response) !== 'text/html') {
         return $next($request, $response);
     }
     $tokens =& self::getStorage($request, self::KEY);
     if (Utils\Helpers::isPost($request) && !$this->validateRequest($request, $tokens)) {
         return $response->withStatus(403);
     }
     $generator = function ($action = null) use($request, &$tokens) {
         if (empty($action)) {
             $action = $request->getUri()->getPath();
         }
         return $this->generateTokens($request, $action, $tokens);
     };
     if (!$this->autoInsert) {
         $request = self::setAttribute($request, self::KEY_GENERATOR, $generator);
         return $next($request, $response);
     }
     $response = $next($request, $response);
     return $this->insertIntoPostForms($response, function ($match) use($generator) {
         preg_match('/action=["\']?([^"\'\\s]+)["\']?/i', $match[0], $matches);
         return $match[0] . $generator(isset($matches[1]) ? $matches[1] : null);
     });
 }
Пример #2
0
 /**
  * Execute the middleware.
  *
  * @param ServerRequestInterface $request
  * @param ResponseInterface      $response
  * @param callable               $next
  *
  * @return ResponseInterface
  */
 public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
 {
     $response = $next($request, $response);
     if (Utils\Helpers::getMimeType($response) === 'text/html' && !Utils\Helpers::isAjax($request)) {
         return $this->inject($response, $this->getCode());
     }
     return $response;
 }
Пример #3
0
 /**
  * Execute the middleware.
  *
  * @param ServerRequestInterface $request
  * @param ResponseInterface      $response
  * @param callable               $next
  *
  * @return ResponseInterface
  */
 public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
 {
     $response = $next($request, $response);
     $resolver = $this->resolver ?: new Transformers\Minifier();
     $transformer = $resolver->resolve(Utils\Helpers::getMimeType($response));
     if ($transformer) {
         return $response->withBody($transformer($response->getBody(), self::createStream()));
     }
     return $response;
 }
Пример #4
0
 /**
  * Execute the middleware.
  *
  * @param RequestInterface  $request
  * @param ResponseInterface $response
  * @param callable          $next
  *
  * @return ResponseInterface
  */
 public function __invoke(RequestInterface $request, ResponseInterface $response, callable $next)
 {
     $response = $next($request, $response);
     $cacheControl = $response->getHeaderLine('Cache-Control') ?: '';
     if (stripos($cacheControl, 'max-age') === false) {
         $mime = Utils\Helpers::getMimeType($response);
         $expires = new DateTimeImmutable(isset($this->expires[$mime]) ? $this->expires[$mime] : $this->expiresDefault);
         $cacheControl .= ' max-age=' . ($expires->getTimestamp() - time());
         return $response->withHeader('Cache-Control', trim($cacheControl))->withHeader('Expires', $expires->format('D, d M Y H:i:s') . ' GMT');
     }
     return $response;
 }
Пример #5
0
 /**
  * Execute the middleware.
  *
  * @param ServerRequestInterface $request
  * @param ResponseInterface      $response
  * @param callable               $next
  *
  * @return ResponseInterface
  */
 public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
 {
     if (Utils\Helpers::getMimeType($response) !== 'text/html') {
         return $next($request, $response);
     }
     if (Utils\Helpers::isPost($request) && !$this->isValid($request)) {
         return $response->withStatus(403);
     }
     $generator = function () {
         return '<input type="text" name="' . $this->inputName . '" class="' . $this->inputClass . '">';
     };
     if (!$this->autoInsert) {
         $request = self::setAttribute($request, self::KEY_GENERATOR, $generator);
         return $next($request, $response);
     }
     $response = $next($request, $response);
     return $this->insertIntoPostForms($response, function ($match) use($generator) {
         return $match[0] . $generator();
     });
 }
Пример #6
0
 /**
  * Execute the middleware.
  *
  * @param ServerRequestInterface $request
  * @param ResponseInterface      $response
  * @param callable               $next
  *
  * @return ResponseInterface
  */
 public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
 {
     $renderer = $this->debugBar->getJavascriptRenderer();
     //Is an asset?
     $path = $request->getUri()->getPath();
     $renderPath = $renderer->getBaseUrl();
     if (strpos($path, $renderPath) === 0) {
         $file = $renderer->getBasePath() . substr($path, strlen($renderPath));
         if (file_exists($file)) {
             return $response->withBody(self::createStream($file, 'r'));
         }
     }
     $response = $next($request, $response);
     //Fix the render baseUrl
     $generator = BasePath::getGenerator($request);
     if ($generator) {
         $renderer->setBaseUrl($generator($renderer->getBaseUrl()));
     }
     $ajax = Utils\Helpers::isAjax($request);
     //Redirection response
     if (Utils\Helpers::isRedirect($response)) {
         if ($this->debugBar->isDataPersisted() || session_status() === PHP_SESSION_ACTIVE) {
             $this->debugBar->stackData();
         }
         //Html response
     } elseif (Utils\Helpers::getMimeType($response) === 'text/html') {
         if (!$ajax) {
             $response = $this->inject($response, $renderer->renderHead(), 'head');
         }
         $response = $this->inject($response, $renderer->render(!$ajax), 'body');
         //Ajax response
     } elseif ($ajax && $this->captureAjax) {
         $headers = $this->debugBar->getDataAsHeaders();
         foreach ($headers as $name => $value) {
             $response = $response->withHeader($name, $value);
         }
     }
     return $response;
 }
 /**
  * Execute the middleware.
  *
  * @param ServerRequestInterface $request
  * @param ResponseInterface      $response
  * @param callable               $next
  *
  * @return ResponseInterface
  */
 public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
 {
     switch (Utils\Helpers::getMimeType($response)) {
         case 'image/jpeg':
         case 'image/gif':
         case 'image/png':
             $key = $this->getCacheKey($request);
             //Get from the cache
             if ($cached = $this->getFromCache($key, $response)) {
                 return $cached;
             }
             $info = $this->parsePath($request->getUri()->getPath());
             if (!$info) {
                 break;
             }
             //Removes the transform info in the path
             list($path, $transform) = $info;
             $request = $request->withUri($request->getUri()->withPath($path));
             $response = $next($request, $response);
             //Transform
             if ($response->getStatusCode() === 200 && $response->getBody()->getSize()) {
                 $response = $this->transform($request, $response, $transform);
                 //Save in the cache
                 $this->saveIntoCache($key, $response);
             }
             return $response;
         case 'text/html':
             $generator = function ($path, $transform) {
                 $info = pathinfo($path);
                 if (!isset($this->sizes[$transform])) {
                     throw new \InvalidArgumentException(sprintf('The image size "%s" is not valid', $transform));
                 }
                 return Utils\Helpers::joinPath($info['dirname'], $transform . $info['basename']);
             };
             $request = self::setAttribute($request, self::KEY_GENERATOR, $generator);
             $response = $next($request, $response);
             if (!empty($this->clientHints)) {
                 return $response->withHeader('Accept-CH', implode(',', $this->clientHints));
             }
             return $response;
     }
     return $next($request, $response);
 }
Пример #8
0
 /**
  * Default handler.
  *
  * @param ServerRequestInterface $request
  * @param ResponseInterface      $response
  *
  * @return string
  */
 private function defaultHandler(ServerRequestInterface $request, ResponseInterface $response)
 {
     $statusCode = $response->getStatusCode();
     $exception = self::getException($request);
     $message = $exception ? $exception->getMessage() : '';
     switch (Utils\Helpers::getMimeType($response)) {
         case 'text/plain':
         case 'text/css':
         case 'text/javascript':
             return self::errorText($statusCode, $message);
         case 'image/jpeg':
             return self::errorImage($statusCode, $message, 'imagejpeg');
         case 'image/gif':
             return self::errorImage($statusCode, $message, 'imagegif');
         case 'image/png':
             return self::errorImage($statusCode, $message, 'imagepng');
         case 'image/svg+xml':
             return self::errorSvg($statusCode, $message);
         case 'application/json':
             return self::errorJson($statusCode, $message);
         case 'text/xml':
             return self::errorXml($statusCode, $message);
         default:
             return self::errorHtml($statusCode, $message);
     }
 }