readJson method
Loads a JSON document, rejecting oversized or non-successful responses.
Implementation
Future<Object?> readJson(String reference) async {
final request = Request('GET', resolve(reference));
request.headers['accept'] = 'application/json';
final response = await _client.send(request);
if (response.statusCode < 200 || response.statusCode >= 300) {
throw ClientException(
'IPFS gateway returned HTTP ${response.statusCode}.',
request.url,
);
}
final bytes = <int>[];
await for (final chunk in response.stream) {
if (bytes.length + chunk.length > maxResponseBytes) {
throw ClientException(
'IPFS response exceeds $maxResponseBytes bytes.',
request.url,
);
}
bytes.addAll(chunk);
}
return jsonDecode(utf8.decode(bytes));
}