public function testUseModifiedSince() { $value = $this->object->getUseModifiedSince(); $this->assertTrue($value); $expected = false; $this->object->setUseModifiedSince($expected); $value = $this->object->getUseModifiedSince(); $this->assertFalse($value); }
public function onRoute(MvcEvent $e) { /** @var $request Request */ $request = $e->getRequest(); /** @var $response Response */ $response = $e->getResponse(); if (!$response instanceof Response) { return; } if (!$this->config->getUseModifiedSince()) { return; } /** @var $modifiedSince IfModifiedSince */ $modifiedSince = $request->getHeader('If-Modified-Since'); if (!$modifiedSince instanceof IfModifiedSince) { return; } $headers = $response->getHeaders(); /** @var $lastModified LastModified */ $lastModified = $headers->get('Last-Modified'); if (!$lastModified instanceof LastModified) { $lastModified = new LastModified(); $headers->addHeader($lastModified); } // check if expire $age = $lastModified->date()->getTimestamp() - $modifiedSince->date()->getTimestamp(); $maxAge = $this->config->getMaxAge(); if ($maxAge < 1) { return; } if ($age < $maxAge) { // Nop, you have quire fresh information $lastModified->setDate($modifiedSince->date()); $response->setStatusCode($response::STATUS_CODE_304); $response->setContent(null); return $response; } }