invokeBuilder<T> method

  1. @override
FutureOr<T> invokeBuilder<T>({
  1. required GeneralPaymentInvokeParameters<T> parameters,
})
override

Implementation

@override
FutureOr<T> invokeBuilder<T>({
  required GeneralPaymentInvokeParameters<T> parameters,
}) async {
  final String method = parameters.method.trim().toLowerCase();
  final uri = Uri.parse(parameters.url).replace(
    queryParameters: parameters.queryParameters,
  );
  final Map<String, String> requestHeaders = {
    'Accept': '*/*',
    "Access-Control-Allow-Origin": "*",
    "Content-Type": "application/json",
  };
  utilsAddHeaders(headers: requestHeaders, newHeaders: parameters.headers);
  final parameter = parameters.parameters ?? {};
  try {
    final http.Response res = await Future(() async {
      if (method == "post") {
        return await GeneralPayment.httpClient.post(
          uri,
          headers: requestHeaders,
          body: json.encode(parameter),
        );
      } else if (method == "patch") {
        return await GeneralPayment.httpClient.patch(
          uri,
          headers: requestHeaders,
          body: json.encode(parameter),
        );
      } else {
        return await GeneralPayment.httpClient.get(
          uri,
          headers: requestHeaders,
        );
      }
    });
    return await parameters.builder(res);
  } catch (e) {
    if (parameters.isThrowOnError) {
      rethrow;
    }
    final http.Response result = () {
      if (e is http.ClientException) {
        return http.Response("network_error", 600);
      } else if (e is String) {
        return http.Response(e, 600);
      } else if (e is Map) {
        return http.Response(json.encode(e), 600);
      }
      return http.Response("error", 600);
    }();

    return await parameters.builder(result);
  }
}