fetchStreamed method
Implementation
Stream<http.Response> fetchStreamed(String method, String path,
{int? pages,
Map<String, String>? headers,
Map<String, dynamic>? params,
String? body,
int statusCode = 200}) async* {
var count = 0;
const serverErrorBackOff = Duration(seconds: 10);
const maxServerErrors = 10;
var serverErrors = 0;
if (params == null) {
params = {};
} else {
params = Map.from(params);
}
var page = params['page'] ?? 1;
params['page'] = page;
// ignore: literal_only_boolean_expressions
while (true) {
http.Response response;
try {
response = await github.request(method, path,
headers: headers,
params: params,
body: body,
statusCode: statusCode);
} on ServerError {
serverErrors += 1;
if (serverErrors >= maxServerErrors) {
break;
}
await Future.delayed(serverErrorBackOff);
continue;
}
yield response;
count++;
if (pages != null && count >= pages) {
break;
}
final link = response.headers['link'];
if (link == null) {
break;
}
final info = parseLinkHeader(link);
final next = info['next'];
if (next == null) {
break;
}
params['page'] = ++page;
}
}