send method

  1. @override
Future<void> send(
  1. BloomTelemetryEvent event
)
override

Transmits a single event to the target collector.

Implementation

@override
Future<void> send(BloomTelemetryEvent event) async {
  try {
    final payload = jsonEncode(event.toJson());
    final requestHeaders = {
      'content-type': 'application/json',
      'user-agent': 'Bloom-Observability/1.0',
      ...headers,
    };

    final response = await _client
        .post(
          endpoint,
          headers: requestHeaders,
          body: payload,
        )
        .timeout(timeout);

    if (response.statusCode >= 400) {
      throw BloomHttpException(
        'Telemetry endpoint rejected event with status ${response.statusCode}: ${response.body}',
        statusCode: response.statusCode,
        uri: endpoint,
      );
    }
  } catch (e, stack) {
    if (onError != null) {
      onError!(event, e, stack);
    }
    rethrow;
  }
}