cancelableHead static method
Implementation
static CancelableOperation<HttpUtilResponse> cancelableHead(
String url, {
List<int> expectedStatusCodes = const [200],
Map<String, String> requestHeaders = const {},
http.Client? client,
}) {
var cpl = Completer<void>();
var req = http.AbortableRequest('HEAD', Uri.parse(url), abortTrigger: cpl.future);
req.headers.addAll(requestHeaders);
var c = client ?? http.Client();
return CancelableOperation.fromFuture(
() async {
var resp = await c.send(req);
cpl.complete();
var total = int.tryParse(resp.headers['Content-Length'] ?? '');
if (!expectedStatusCodes.contains(resp.statusCode)) {
throw HttpUtilUnexpectedException(
HttpUtilResponse(
resp.statusCode,
utf8.decode(await resp.stream.toBytes(), allowMalformed: true),
resp.headers['Content-Type'],
total,
),
);
}
return HttpUtilResponse(resp.statusCode, null, resp.headers['Content-Type'], total);
}(),
onCancel: () {
cpl.complete();
throw http.RequestAbortedException(req.url);
},
);
}