getApiByData method

Future<Result<dynamic, String>> getApiByData(
  1. String ppath,
  2. dynamic pdata,
  3. String pmethod,
  4. bool? puseToken,
  5. bool? pdataQueryParameters,
  6. String? authorization,
)

Implementation

Future<Result<dynamic, String>> getApiByData(
    String ppath,
    dynamic pdata,
    String pmethod,
    bool? puseToken,
    bool? pdataQueryParameters,
    String? authorization) async {
  Repository repository = Repository();
  dynamic pheader;
  if (puseToken != null) {
    if (puseToken) {
      DateTime dtNow = DateTime.now();
      String strTemp =
          "${dtNow.day < 10 ? "0" : ""}${dtNow.day}${dtNow.month < 10 ? "0" : ""}${dtNow.month}${dtNow.year}107569";
      if (pdata == null) {
        pdata = {
          "ptoken": md5.convert(utf8.encode(strTemp)).toString().toLowerCase()
        };
      } else {
        pdata["ptoken"] =
            md5.convert(utf8.encode(strTemp)).toString().toLowerCase();
      }
    }
  }
  if (authorization != null) {
    pheader = {'Authorization': authorization};
  }

  try {
    Response? response = await repository.callDio(
        ppath,
        pdataQueryParameters == false ? pdata : null,
        authorization != null ? pheader : null,
        pdataQueryParameters == true ? pdata : null,
        pmethod);

    if (response!.statusCode == 200) {
      Map<String, dynamic> map = response.data;
      if (map["msgstatus"] != 1) {
        return Failure(
            map["description"] ?? "Falha na comunicação com a API.");
      } else {
        if (map["data"] is Map<String, dynamic>) {
          return Success(map["data"] as Map<String, dynamic>);
        } else if (map["data"] is List<dynamic>) {
          return Success(map["data"] as List<dynamic>);
        } else if (map["data"] != null) {
          return Success(map["data"]);
        } else {
          dynamic result = {"data": "Sem retorno"};
          return Success(result as Map<String, dynamic>);
        }
      }
    } else {
      return Failure(
          response.statusMessage ?? "Falha na comunicação com a API.");
    }
  } catch (ex) {
    return Failure(ex.toString().replaceAll("Exception:", "Erro interno: "));
  }
}