supportsRangeRequests method

  1. @override
Future<Tuple<bool, int?>> supportsRangeRequests({
  1. required String sha256,
  2. required String serverUrl,
})
override

first value is whether the server supports range requests
second value is the content length of the blob in bytes

Implementation

@override
Future<Tuple<bool, int?>> supportsRangeRequests({
  required String sha256,
  required String serverUrl,
}) async {
  try {
    final response = await client.head(
      url: Uri.parse('$serverUrl/$sha256'),
    );

    final acceptRanges = response.headers['accept-ranges'];
    final contentLength =
        int.tryParse(response.headers['content-length'] ?? '');
    return Tuple(acceptRanges?.toLowerCase() == 'bytes', contentLength);
  } catch (e) {
    return Tuple(false, null);
  }
}