/** * Fetch one deposit from LOCKSSOMatic. * * @param Deposit $deposit * @param string $href */ public function fetch(Deposit $deposit, $href) { $client = $this->getHttpClient(); $filepath = $this->filePaths->getRestoreDir($deposit->getJournal()) . '/' . basename($href); $this->logger->notice("Saving {$deposit->getJournal()->getTitle()} vol. {$deposit->getVolume()} no. {$deposit->getIssue()} to {$filepath}"); try { $client->get($href, array('allow_redirects' => false, 'decode_content' => false, 'save_to' => $filepath)); $hash = strtoupper(hash_file($deposit->getPackageChecksumType(), $filepath)); if ($hash !== $deposit->getPackageChecksumValue()) { $this->logger->warning("Package checksum failed. Expected {$deposit->getPackageChecksumValue()} but got {$hash}"); } } catch (Exception $ex) { $this->logger->error($ex->getMessage()); } }