send method

  1. @override
Future<TransportResponse> send({
  1. required String method,
  2. required Uri uri,
  3. required Map<String, String> headers,
  4. String? body,
  5. required Duration timeout,
})
override

Implementation

@override
Future<TransportResponse> send({
  required String method,
  required Uri uri,
  required Map<String, String> headers,
  String? body,
  required Duration timeout,
}) async {
  try {
    final request = http.Request(method, uri)..headers.addAll(headers);
    request.followRedirects = false;
    if (body != null) request.body = body;
    final streamed = await _client.send(request).timeout(timeout);
    final responseBody = await _readBoundedBody(streamed);
    return TransportResponse(
      streamed.statusCode,
      Map<String, String>.unmodifiable(streamed.headers),
      responseBody,
    );
  } on ApiTransportException {
    rethrow;
  } catch (_) {
    throw const ApiTransportException(
      ApiTransportErrorCode.requestFailed,
      'ERS HTTP request failed before a response was received.',
    );
  }
}