call method

Implementation

Future<Http4Response> call() async {
  try {
    final req = http.MultipartRequest(
      method.toStr,
      baseUrl,
    );

    req.headers.addAll(headers);
    req.fields.addAll(fields);
    req.files.addAll(files);

    final response = await http.Response.fromStream(
      await client.send(req),
    );

    client.close();

    return Http4Response(
      httpResponse: response,
      isSuccessed: true,
      isOkey: [200, 201, 202, 203, 204, 205, 206, 207]
          .contains(response.statusCode),
      decodedBody: jsonDecode(response.body),
    );
  } catch (exception) {
    if (Http4Config().debugMode) {
      debugPrint('\nHTTP4 Exception: ');
      debugPrint('Endpoint: (MULTIPART | ${method.toStr}) $baseUrl');
      debugPrint('Exception: $exception');
      debugPrint('\n\n');
    }

    client.close();

    return Http4Response(
      httpResponse: null,
      isSuccessed: false,
      isOkey: false,
      decodedBody: null,
    );
  }
}