send method

  1. @override
Future<StreamedResponse> send(
  1. BaseRequest request
)

Sends an HTTP request and asynchronously returns the response.

Implementers should call BaseRequest.finalize to get the body of the request as a ByteStream. They shouldn't make any assumptions about the state of the stream; it could have data written to it asynchronously at a later point, or it could already be closed when it's returned. Any internal HTTP errors should be wrapped as ClientExceptions.

Implementation

@override
Future<http.StreamedResponse> send(http.BaseRequest request) {
  if (request is! http.Request) return innerClient.send(request);

  if (request.body.isEmpty) return innerClient.send(request);
  if (request.headers['Content-Encoding'] == 'gzip') return innerClient.send(request);

  final newRequest = http.Request(request.method, request.url);
  newRequest.headers.addAll(request.headers);
  newRequest.bodyBytes = _encoder.encode(request.bodyBytes);
  newRequest.headers['Content-Encoding'] = 'gzip';

  return innerClient.send(newRequest);
}