query method

Future query(
  1. String query,
  2. Object? variables, {
  3. Map<String, dynamic>? customHeaders,
})

Implementation

Future<dynamic> query(String query, Object? variables, {Map<String, dynamic>? customHeaders}) async {
  final HttpMetric metric = FirebasePerformance.instance.newHttpMetric(
    appsUrl,
    HttpMethod.Post,
  );
  try {
    await metric.start();

    // Add request attributes

    var req = await client.Request(appsUrl, "POST",
        auth: true, data: {"query": query, "variables": variables}, encrypt: encryptMode, customHeaders: customHeaders);

    Map<String, dynamic> jsonData = req.data;
    // Get the first key inside "data"
    String? keyName = jsonData["data"]?.keys.first;

    metric.putAttribute('api_name', "graphql/query/${keyName}");

    metric.httpResponseCode = req.statusCode;
    metric.responsePayloadSize = utf8.encode(req.data.toString()).length;

    await metric.stop();
    // print(req);
    return req.data;
  } catch (e) {
    // print(e);
    metric.putAttribute('error', e.toString());
    throw (e);
  }
}