diff --git a/app/Jobs/DownloadWebMention.php b/app/Jobs/DownloadWebMention.php index d9ee71ab..0c9ae64b 100644 --- a/app/Jobs/DownloadWebMention.php +++ b/app/Jobs/DownloadWebMention.php @@ -36,25 +36,35 @@ class DownloadWebMention implements ShouldQueue */ public function handle(Client $guzzle) { - $response = $guzzle->request('GET', $source); + $response = $guzzle->request('GET', $this->source); //4XX and 5XX responses should get Guzzle to throw an exception, //Laravel should catch and retry these automatically. if ($response->getStatusCode() == '200') { - $filesystem = \Illuminate\FileSystem\FileSystem(); - $filename = storage_path() . '/HTML/' . $this->createFilenameFromURL($source); + $filesystem = new \Illuminate\FileSystem\FileSystem(); + $filename = storage_path() . '/HTML/' . $this->createFilenameFromURL($this->source); //backup file first $filenameBackup = $filename . '.' . date('Y-m-d') . '.backup'; if ($filesystem->exists($filename)) { $filesystem->copy($filename, $filenameBackup); } + //check if base directory exists + if (!$filesystem->exists($filesystem->dirname($filename))) { + $filesystem->makeDirectory( + $filesystem->dirname($filename), + 0755, //mode + true //recursive + ); + } //save new HTML $filesystem->put( $filename, (string) $response->getBody() ); //remove backup if the same - if ($filesystem->get($filename) == $filesystem->get($filenameBackup)) { - $filesystem->delete($filenameBackup); + if ($filesystem->exists($filenameBackup)) { + if ($filesystem->get($filename) == $filesystem->get($filenameBackup)) { + $filesystem->delete($filenameBackup); + } } } } @@ -68,11 +78,11 @@ class DownloadWebMention implements ShouldQueue */ private function createFilenameFromURL($url) { - $url = str_replace(['https://', 'http://'], ['https/', 'http/'], $url); - if (substr($url, -1) == '/') { - $url = $url . 'index.html'; + $filepath = str_replace(['https://', 'http://'], ['https/', 'http/'], $url); + if (substr($filepath, -1) == '/') { + $filepath .= 'index.html'; } - return $url; + return $filepath; } }