tool->fresh()?->logo_url !== $this->sourceUrl) { return; } $response = Http::timeout(10)->get($this->sourceUrl); if (! $response->successful() || ! str_starts_with((string) $response->header('Content-Type'), 'image/')) { return; } $extension = match ($response->header('Content-Type')) { 'image/png' => 'png', 'image/jpeg' => 'jpg', 'image/webp' => 'webp', 'image/x-icon', 'image/vnd.microsoft.icon' => 'ico', default => 'svg' === pathinfo(parse_url($this->sourceUrl, PHP_URL_PATH) ?? '', PATHINFO_EXTENSION) ? 'svg' : 'png', }; $path = "tools/{$this->tool->slug}-".Str::random(8).".{$extension}"; Storage::disk('public')->put($path, $response->body()); $this->tool->update(['logo_url' => Storage::disk('public')->url($path)]); } }