invokeRaw method
Implementation
Future<Map> invokeRaw({
required PubDevClientInvokeParameters invokeParameters,
}) async {
final Map<String, String> headersOptions = {
"user-agent":
"pub_dev_client/${PubDevClient} ${invokeParameters.userAgent}",
};
final String method =
(regExpMethod.stringMatch(invokeParameters.urlPathScheme) ?? "get")
.trim();
final String urlPath =
invokeParameters.urlPathScheme.replaceAll(regExpMethod, "").trim();
final Uri url = Uri.parse("https://pub.dev/api").replace(
path: urlPath,
queryParameters: invokeParameters.urlQueryParameters,
);
final http.Response response = await Future(() async {
try {
if (method == "post") {
return await http.post(url);
}
return await http.get(url, headers: headersOptions);
} catch (e) {
if (invokeParameters.isThrowOnError) {
rethrow;
}
if (e is http.ClientException) {
return http.Response(
json.encode({
"@type": "error",
"message": "network_error",
}),
400,
);
}
return http.Response("${e}", 400);
}
}).timeout(
invokeParameters.durationTimeOut,
onTimeout: () async {
return http.Response(
json.encode({"@type": "error", "message": "timeout"}),
400,
);
},
);
final dynamic responseBody = () {
try {
return json.decode(response.body);
} catch (e) {}
return {};
}();
if (response.statusCode == 200) {
responseBody["@type"] = "ok";
} else {
responseBody["@type"] = "error";
}
return responseBody;
}