execute method

  1. @override
Future<HttpResponse> execute({
  1. required String url,
  2. required HttpMethod method,
  3. Uint8List? body,
  4. Map<String, String>? headers,
})
override

Executes an HTTP request and returns the raw response

Implementation

@override
Future<HttpResponse> execute({
  required String url,
  required HttpMethod method,
  Uint8List? body,
  Map<String, String>? headers,
}) async {
  final uri = Uri.parse(url);
  final requestHeaders = headers ?? {};

  http.Response response;

  try {
    switch (method) {
      case HttpMethod.get:
        response =
            await _client.get(uri, headers: requestHeaders).timeout(timeout);
        break;
      case HttpMethod.post:
        response = await _client
            .post(uri, headers: requestHeaders, body: body)
            .timeout(timeout);
        break;
      case HttpMethod.put:
        response = await _client
            .put(uri, headers: requestHeaders, body: body)
            .timeout(timeout);
        break;
      case HttpMethod.delete:
        response = await _client
            .delete(uri, headers: requestHeaders)
            .timeout(timeout);
        break;
    }

    return HttpResponse(
      statusCode: response.statusCode,
      body: response.bodyBytes,
    );
  } catch (e) {
    rethrow;
  }
}