emitAnalytics method

Future<void> emitAnalytics(
  1. Map<String, dynamic> request
)

Emits analytics data to the Optimus API.

Implementation

Future<void> emitAnalytics(Map<String, dynamic> request) async {
  final body = convert.jsonEncode(request);

  final response = await _client.post(
    Uri.https(_apiEndpoint, pushAnalyticsUrl),
    headers: _getJsonHeaders(),
    body: body,
    encoding: const convert.Utf8Codec(),
  );

  final res = Response.fromJson(
    convert.jsonDecode(response.body) as Map<String, dynamic>,
  );

  logRequest(path: pushAnalyticsUrl, message: body);
  logResponse(
    path: pushAnalyticsUrl,
    responseCode: response.statusCode,
    responseBody: response.body,
  );

  if (response.statusCode != 200 || !res.success) {
    throw ClientException(
      res.message.isNotEmpty
          ? res.message
          : 'Something went wrong while calling Optimus analytics API',
      response.statusCode,
    );
  }
}