private function fetch($fileId, $format, $response)
{
if (!$fileId || !$format) {
$response->setStatusCode(404);
return $response;
}
$package = $this->getPackageFile($fileId, $format);
if (!file_exists($package)) {
$response->setStatusCode(404);
return $response;
}
$stream = fopen($package, 'r');
if (false === $stream) {
$response->setStatusCode(500);
return $response;
}
// Mark the package for deletion when the request spins down.
$this->sentPackage = $package;
// Create a streamable response.
$response = new Stream();
$response->setStream($stream);
$response->getHeaders()->addHeaderLine('Content-Type', 'application/octet-stream')->addHeaderLine('Content-Disposition', sprintf('attachment; filename="apigility_%s.%s"', date('Y-m-d_H-i-s'), $format))->addHeaderLine('Content-Length', filesize($package));
return $response;
}