diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/dav/lib/CardDAV/ImageExportPlugin.php | 5 | ||||
-rw-r--r-- | apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php | 16 |
2 files changed, 20 insertions, 1 deletions
diff --git a/apps/dav/lib/CardDAV/ImageExportPlugin.php b/apps/dav/lib/CardDAV/ImageExportPlugin.php index e48410d26d6..3ad7983451b 100644 --- a/apps/dav/lib/CardDAV/ImageExportPlugin.php +++ b/apps/dav/lib/CardDAV/ImageExportPlugin.php @@ -86,6 +86,11 @@ class ImageExportPlugin extends ServerPlugin { } if ($result = $this->getPhoto($node)) { + // Allow caching + $response->setHeader('Cache-Control', 'private, max-age=3600, must-revalidate'); + $response->setHeader('Etag', $node->getETag() ); + $response->setHeader('Pragma', 'public'); + $response->setHeader('Content-Type', $result['Content-Type']); $response->setHeader('Content-Disposition', 'attachment'); $response->setStatus(200); diff --git a/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php b/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php index fc4be1433fe..ed311e79f4a 100644 --- a/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php +++ b/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php @@ -102,6 +102,8 @@ class ImageExportPluginTest extends TestCase { $this->request->expects($this->once())->method('getPath')->willReturn('/files/welcome.txt'); $card = $this->getMockBuilder('Sabre\CardDAV\Card')->disableOriginalConstructor()->getMock(); + $card->method('getETag') + ->willReturn('"myEtag"'); $this->tree->expects($this->once())->method('getNodeForPath')->with('/files/welcome.txt')->willReturn($card); $this->plugin->expects($this->once())->method('getPhoto')->willReturn($getPhotoResult); @@ -110,10 +112,22 @@ class ImageExportPluginTest extends TestCase { $this->response ->expects($this->at(0)) ->method('setHeader') - ->with('Content-Type', $getPhotoResult['Content-Type']); + ->with('Cache-Control', 'private, max-age=3600, must-revalidate'); $this->response ->expects($this->at(1)) ->method('setHeader') + ->with('Etag', '"myEtag"'); + $this->response + ->expects($this->at(2)) + ->method('setHeader') + ->with('Pragma', 'public'); + $this->response + ->expects($this->at(3)) + ->method('setHeader') + ->with('Content-Type', $getPhotoResult['Content-Type']); + $this->response + ->expects($this->at(4)) + ->method('setHeader') ->with('Content-Disposition', 'attachment'); $this->response ->expects($this->once()) |