guardedRequest($url)->timeout(10)->get($url); if (! $response->successful()) { Log::warning('uploadFromUrl: Failed to download', [ 'url' => $url, 'status' => $response->status(), ]); return null; } $contentType = $response->header('Content-Type') ?? 'image/jpeg'; $extension = match (true) { str_contains($contentType, 'png') => 'png', str_contains($contentType, 'gif') => 'gif', str_contains($contentType, 'webp') => 'webp', default => 'jpg', }; $filename = sprintf( '%s/%s.%s', trim($directory, '/'), Str::uuid(), $extension ); $stored = Storage::put($filename, $response->body(), 'public'); if (! $stored) { Log::warning('uploadFromUrl: Storage::put failed', [ 'url' => $url, 'filename' => $filename, ]); return null; } return $filename; } catch (Exception $e) { Log::warning('uploadFromUrl: Exception', [ 'url' => $url, 'error' => $e->getMessage(), ]); return null; } } }