upload method

  1. @override
Future<int> upload(
  1. UploadRequestData request, {
  2. DRCancelToken? cancel,
})
override

Implementation

@override
Future<int> upload(UploadRequestData request, {DRCancelToken? cancel}) {
  return _guard(request.timeoutMs, cancel, (track) async {
    final req = await _client.openUrl(request.method, request.url);
    track(req);
    req.followRedirects = false;
    request.headers.forEach(req.headers.set);
    req.contentLength = request.length;
    var sent = 0;
    await req.addStream(request.body().map((chunk) {
      sent += chunk.length;
      request.onProgress?.call(sent);
      return chunk;
    }));
    final response = await req.close();
    await response.drain<void>();
    return response.statusCode;
  });
}