diff --git a/app/Jobs/UpdateSite.php b/app/Jobs/UpdateSite.php index 8a65cf0..5830747 100644 --- a/app/Jobs/UpdateSite.php +++ b/app/Jobs/UpdateSite.php @@ -8,6 +8,7 @@ use App\Models\Site; use App\RemoteSite\Connection; use App\RemoteSite\Responses\PrepareUpdate; +use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Queue\Queueable; @@ -96,6 +97,9 @@ public function handle(): void $prepareResult = $connection->prepareUpdate(["targetVersion" => $this->targetVersion]); + // Perform additional preparation calls + $this->performExtraPreparations($prepareResult); + // Perform the actual extraction try { $this->performExtraction($prepareResult); @@ -131,6 +135,29 @@ public function handle(): void CheckSiteHealth::dispatch($this->site); } + protected function performExtraPreparations(PrepareUpdate $prepareResult): void + { + if (!count($prepareResult->preparationUrls)) { + return; + } + + /** @var Client $httpClient */ + $httpClient = App::make(Client::class); + + // Call each preparation URL + foreach ($prepareResult->preparationUrls as $url) { + $httpClient->get( + $url, + [ + 'timeout' => 30.0, + 'allow_redirects' => [ + 'max' => 100 + ] + ] + ); + } + } + protected function performExtraction(PrepareUpdate $prepareResult): void { /** Create a separate connection with the extraction password **/ diff --git a/app/RemoteSite/Responses/PrepareUpdate.php b/app/RemoteSite/Responses/PrepareUpdate.php index 3efc4c1..4035630 100644 --- a/app/RemoteSite/Responses/PrepareUpdate.php +++ b/app/RemoteSite/Responses/PrepareUpdate.php @@ -8,7 +8,8 @@ class PrepareUpdate extends BaseDTO implements ResponseInterface { public function __construct( public string $password, - public int $filesize + public int $filesize, + public array $preparationUrls = [] ) { } }