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