callApi<R, T> method

Future<T> callApi<R, T>(
  1. String? endPoint,
  2. ApiMethodTypes type,
  3. dynamic onLoading(
    1. bool
    ),
  4. dynamic parser(
    1. Map<String, dynamic>
    ), {
  5. Map<String, String>? headers,
  6. Map<String, dynamic>? queryParameters,
  7. Map<String, dynamic>? body,
  8. List<File>? files,
  9. String? fileParamName,
  10. R? request,
})

Implementation

Future<T> callApi<R, T>(String? endPoint, ApiMethodTypes type,
    Function(bool) onLoading, Function(Map<String, dynamic>) parser,
    {Map<String, String>? headers,
    Map<String, dynamic>? queryParameters,
    Map<String, dynamic>? body,
    List<File>? files,
    String? fileParamName,
    R? request}) async {
  Map<String, dynamic>? json;
  if (type == ApiMethodTypes.post ||
      type == ApiMethodTypes.put ||
      type == ApiMethodTypes.delete) {
    json = await ApiFactoryProvider.getApiWithBodyBase(type).callApi(
        _baseUrl + (endPoint ?? ""), body,
        headers: headers ?? {},
        loading: onLoading,
        queryParameters: queryParameters);
  } else if (type == ApiMethodTypes.postWithMultipart) {
    json = await ApiFactoryProvider.getApiMultiPartBase(type).callApi(
        _baseUrl + (endPoint ?? ""),
        body?.cast<String, String>(),
        files,
        fileParamName,
        headers: headers ?? {},
        loading: onLoading,
        queryParameters: queryParameters);
  } else {
    json = await ApiFactoryProvider.getApiWithoutBody(type).callApi(
        _baseUrl + (endPoint ?? ""),
        headers: headers ?? {},
        loading: onLoading,
        queryParameters: queryParameters);
  }
  return parser(json ?? {});

  /* final ApiFactoryProvider apiFactoryProvider =
      ApiFactoryProvider.provideApi(type);
  Map<String, dynamic>? json;

  if (apiFactoryProvider is GetApi) {
    json = await apiFactoryProvider.callApi(_baseUrl + (endPoint ?? ""),
        headers: headers ?? {},
        loading: onLoading,
        queryParameters: queryParameters);
  } else if (apiFactoryProvider is PostApi) {
    json = await apiFactoryProvider.callApi(_baseUrl + (endPoint ?? ""), body,
        headers: headers ?? {},
        loading: onLoading,
        queryParameters: queryParameters);
  } else if (apiFactoryProvider is PutApi) {
    json = await apiFactoryProvider.callApi(_baseUrl + (endPoint ?? ""), body,
        headers: headers ?? {},
        loading: onLoading,
        queryParameters: queryParameters);
  } else if (apiFactoryProvider is DeleteApi) {
    json = await apiFactoryProvider.callApi(_baseUrl + (endPoint ?? ""), body,
        headers: headers ?? {},
        loading: onLoading,
        queryParameters: queryParameters);
  } else if (apiFactoryProvider is PostWithMultipartApi) {
    json = await apiFactoryProvider.callApi(_baseUrl + (endPoint ?? ""),
        body?.cast<String, String>(), files, fileParamName,
        headers: headers ?? {},
        loading: onLoading,
        queryParameters: queryParameters);

            return parser(json ?? {});

  }*/

  /*

    TODO UNCOMMENT AND USE IF NEEDED
    Function(dynamic)? onSuccess,
    Function(dynamic)? onFailure,

   var json = await apiBaseHelper.getApiCall(
    url: endPoint ?? "",
    loading: onLoading,
  );
  return parser(json);

  */
}