torrust_tracker_deployer_lib/presentation/cli/views/sinks/
telemetry.rs1use super::super::{OutputMessage, OutputSink};
4
5pub struct TelemetrySink {
6 endpoint: String,
7}
8
9impl TelemetrySink {
10 #[must_use]
20 pub fn new(endpoint: String) -> Self {
21 Self { endpoint }
22 }
23
24 #[cfg(test)]
26 #[must_use]
27 pub fn endpoint(&self) -> &str {
28 &self.endpoint
29 }
30}
31
32impl OutputSink for TelemetrySink {
33 fn write_message(&mut self, message: &dyn OutputMessage, formatted: &str) {
34 tracing::debug!(
36 endpoint = %self.endpoint,
37 message_type = message.type_name(),
38 channel = ?message.channel(),
39 content = formatted,
40 "Telemetry event"
41 );
42 }
43}
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48
49 #[test]
50 fn telemetry_sink_should_create_with_endpoint() {
51 let sink = TelemetrySink::new("https://example.com".to_string());
52 assert_eq!(sink.endpoint(), "https://example.com");
53 }
54}