/usr/share/php/Nette/Http/Context.php is in php-nette 2.4-20160731-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | <?php
/**
* This file is part of the Nette Framework (https://nette.org)
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
*/
namespace Nette\Http;
use Nette;
/**
* HTTP-specific tasks.
*/
class Context
{
use Nette\SmartObject;
/** @var IRequest */
private $request;
/** @var IResponse */
private $response;
public function __construct(IRequest $request, IResponse $response)
{
$this->request = $request;
$this->response = $response;
}
/**
* Attempts to cache the sent entity by its last modification date.
* @param string|int|\DateTimeInterface last modified time
* @param string strong entity tag validator
* @return bool
*/
public function isModified($lastModified = NULL, $etag = NULL)
{
if ($lastModified) {
$this->response->setHeader('Last-Modified', Helpers::formatDate($lastModified));
}
if ($etag) {
$this->response->setHeader('ETag', '"' . addslashes($etag) . '"');
}
$ifNoneMatch = $this->request->getHeader('If-None-Match');
if ($ifNoneMatch === '*') {
$match = TRUE; // match, check if-modified-since
} elseif ($ifNoneMatch !== NULL) {
$etag = $this->response->getHeader('ETag');
if ($etag == NULL || strpos(' ' . strtr($ifNoneMatch, ",\t", ' '), ' ' . $etag) === FALSE) {
return TRUE;
} else {
$match = TRUE; // match, check if-modified-since
}
}
$ifModifiedSince = $this->request->getHeader('If-Modified-Since');
if ($ifModifiedSince !== NULL) {
$lastModified = $this->response->getHeader('Last-Modified');
if ($lastModified != NULL && strtotime($lastModified) <= strtotime($ifModifiedSince)) {
$match = TRUE;
} else {
return TRUE;
}
}
if (empty($match)) {
return TRUE;
}
$this->response->setCode(IResponse::S304_NOT_MODIFIED);
return FALSE;
}
/**
* @return IRequest
*/
public function getRequest()
{
return $this->request;
}
/**
* @return IResponse
*/
public function getResponse()
{
return $this->response;
}
}
|