cacheRemoteAsset method

Future<SlideAsset?> cacheRemoteAsset(
  1. String url
)

Implementation

Future<SlideAsset?> cacheRemoteAsset(String url) async {
  if (!url.startsWith('http')) {
    return null;
  }

  var ext = p.extension(url).replaceFirst('.', '');

  // Check if url has extension and is an image
  if (!SlideAsset.allowedExtensions.contains(ext)) {
    return null;
  }

  final client = HttpClient();
  final request = await client.getUrl(Uri.parse(url));
  final response = await request.close();
  final data = await consolidateHttpClientResponseBytes(response);

  final contentType = response.headers.contentType;
  // Default to .jpg if no extension is found
  final extension = contentType?.subType ?? 'jpg';

  final fileName = '${url.hashCode}.$extension';

  return Pipeline.saveAsset(
    fileName,
    data: data,
  );
}