Skip to content

Commit a2d9441

Browse files
committed
Add support for Range requests
1 parent 7af448d commit a2d9441

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

src/Model/BasicContainer.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public function respond(Application $app, Request $request)
2727
$res = new Response();
2828
$res->headers->add($headers);
2929
$res->setLastModified($modifiedTime);
30-
$res->setEtag($this->getEtag($responseFormat));
30+
$res->setEtag($this->getEtag($responseFormat, $request->headers->get('range')));
3131

3232
if (!$res->isNotModified($request)) {
3333
$subject = $request->getUri();
@@ -84,10 +84,11 @@ public function respond(Application $app, Request $request)
8484
return $res;
8585
}
8686

87-
private function getEtag($responseFormat)
87+
private function getEtag($responseFormat, $range)
8888
{
8989
$mtime = filemtime($this->path);
90-
return sha1($mtime . $this->path . $responseFormat);
90+
$byteRange = $range ? $range : "";
91+
return sha1($mtime . $this->path . $responseFormat . $byteRange);
9192
}
9293

9394
private function useCompactJsonLd($accept)

src/Model/NonRDFSource.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function respond(Application $app, Request $request, $options = array())
2020
$res = new Response();
2121
$res->headers->add($this->getHeaders($contentDisposition));
2222
$res->setLastModified(\DateTime::createFromFormat('U', filemtime($this->path)));
23-
$res->setEtag($this->getEtag());
23+
$res->setEtag($this->getEtag($request->headers->get('range')));
2424
if (!$res->isNotModified($request)) {
2525
$digest = $this->wantDigest($request->headers->get('want-digest'));
2626
if ($digest) {
@@ -57,10 +57,11 @@ private function getHeaders($contentDisposition)
5757
return $headers;
5858
}
5959

60-
private function getEtag()
60+
private function getEtag($range)
6161
{
6262
$mtime = filemtime($this->path);
6363
$size = filesize($this->path);
64-
return sha1($mtime . $size);
64+
$byteRange = $range ? $range : "";
65+
return sha1($mtime . $size . $byteRange);
6566
}
6667
}

src/Model/RDFSource.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public function respond(Application $app, Request $request)
1919
$res = new Response();
2020
$res->headers->add($this->getHeaders($responseMimeType));
2121
$res->setLastModified(\DateTime::createFromFormat('U', filemtime($this->path)));
22-
$res->setEtag($this->getEtag($responseFormat));
22+
$res->setEtag($this->getEtag($responseFormat, $request->headers->get('range')));
2323
if (!$res->isNotModified($request)) {
2424
$extParts = explode(".", $this->path);
2525
if (count($extParts) > 1) {
@@ -58,11 +58,12 @@ public function respond(Application $app, Request $request)
5858
return $res;
5959
}
6060

61-
private function getEtag($responseFormat)
61+
private function getEtag($responseFormat, $range)
6262
{
6363
$mtime = filemtime($this->path);
6464
$size = filesize($this->path);
65-
return sha1($mtime . $size . $responseFormat);
65+
$byteRange = $range ? $range : "";
66+
return sha1($mtime . $size . $responseFormat . $range);
6667
}
6768

6869
private function canStream($responseFormat)

0 commit comments

Comments
 (0)