cacheRemoteAsset method
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,
);
}