downloadMedia method
Common function to download media pixabay.com does not prefer hotlinking
Implementation
Future<BytesBuilder> downloadMedia(PixabayMedia media, String res,
[Function callback]) async {
var completer = new Completer<BytesBuilder>();
HttpClient httpClient = new HttpClient();
String downloadUrl = media.getDownloadLink(res: res);
print("Downloading $downloadUrl");
HttpClientRequest request = await httpClient.getUrl(Uri.parse(downloadUrl));
HttpClientResponse response = await request.close();
// Process the response.
if (response.statusCode == 200) {
// response: OK
int fileSize = response.contentLength;
int downloaded = 0;
// store on file system?
// String dir = (await getApplicationDocumentsDirectory()).path;
//response.pipe(File('$dir/${image.getId()}.jpg').openWrite());
var contents = new BytesBuilder();
response.listen((List<int> data) {
downloaded += data.length;
contents.add(data);
// handle data
double progress = downloaded / fileSize;
if (callback != null) callback(progress);
}, onDone: () => completer.complete(contents));
} else {
// something went wrong :(
print("Http error: ${response.statusCode}");
}
return completer.future;
}