callAPI function

Future<Response> callAPI(
  1. String? api, {
  2. String apiLang = "",
  3. Object? request,
  4. Uri? uri,
  5. bool isGetAPI = false,
})

Implementation

Future<Response> callAPI(String? api,
    {String apiLang = "",
    Object? request,
    Uri? uri,
    bool isGetAPI = false}) async {
  try {
    if (AppConstants.apiKey.isEmpty)
      return http.Response(
          "", ErrorHelper.getValue(ErrorsEnum.CONFIG_API_KEY_ERROR).code!);
//    else if (AppConstants.baseUrl.isEmpty)
//      return http.Response(
//          "", ErrorHelper.getValue(ErrorsEnum.CONFIG_BASE_URL_ERROR).code!);

    var mURI;
    if (api != null) {
      if (api.startsWith("http"))
        mURI = Uri.parse(api);
      else if (ConfigManager.getBaseURL() != null)
        mURI = Uri.parse(ConfigManager.getBaseURL() + api);
    } else
      mURI = uri;

    http.Response response;

    if (isGetAPI)
      response = await http.get(mURI);
    else
      response = await http.post(mURI,
          headers: {
            HttpHeaders.contentTypeHeader: ContentType.json.toString(),
            HttpHeaders.authorizationHeader: AppConstants.apiKey,
            HttpHeaders.acceptLanguageHeader: apiLang
          },
          body: request);

    if (ConfigManager.mUserConfig!.environment == MFEnvironment.TEST) {
      print("Http -> url: " + response.request.toString());
      print("Http -> statusCode: " + response.statusCode.toString());
      print("Http -> body: " + response.body);
    }

    return response;
  } on SocketException {
    return http.Response(
        "", ErrorHelper.getValue(ErrorsEnum.INTERNET_CONNECTION_ERROR).code!);
  }
}