invokeBuilder<T> method
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);
}
}