source = $source; } /** * Execute the job. * * @return void */ public function handle(Client $guzzle) { $response = $guzzle->request('GET', $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 = $this->createFilenameFromURL($source); //backup file first if ($filesystem->exists($filename)) { $filesystem->copy($filename, $filename . '.' . date('Y-m-d') . '.backup'); } $filesystem->put( $filename, (string) $response->getBody() ); } } /** * Create a file path from a URL. This is used when caching the HTML * response. * * @param string The URL * @return string The path name */ private function createFilenameFromURL($url) { $url = str_replace(['https://', 'http://'], ['https/', 'http/'], $url); if (substr($url, -1) == '/') { $url = $url . 'index.html'; } return $url; } }