invokeRaw method

Future<Map> invokeRaw({
  1. required PubDevClientInvokeParameters invokeParameters,
})

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;
}