use std::collections::HashMap;
use crate::api::kafka_publish_message_type::KafkaPublishMessageType;
#[derive(Clone)]
pub struct KafkaPublishMessage {
pub msg_type: KafkaPublishMessageType,
pub topic: String,
pub key: String,
pub headers: Option<HashMap<String, String>>,
pub payload: String,
}
impl Default for KafkaPublishMessage {
fn default() -> Self {
Self::new()
}
}
impl KafkaPublishMessage {
pub fn new() -> Self {
KafkaPublishMessage {
msg_type: KafkaPublishMessageType::Data,
topic: "".to_string(),
key: "".to_string(),
headers: None,
payload: "".to_string(),
}
}
pub fn new_from(
msg_type: KafkaPublishMessageType,
topic: &str,
key: &str,
headers: Option<HashMap<String, String>>,
payload: &str,
) -> Self {
KafkaPublishMessage {
msg_type,
topic: topic.to_string(),
key: key.to_string(),
headers,
payload: payload.to_string(),
}
}
}
impl std::fmt::Debug for KafkaPublishMessage {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
if self.msg_type != KafkaPublishMessageType::Sensitive {
write!(
f,
"DEBUG KafkaPublishMessage \
type={:?} \
topic={} \
key={} \
headers={:?} \
payload={}",
self.msg_type, self.topic, self.key, self.headers, self.payload
)
} else {
write!(
f,
"DEBUG SENSITIVE KafkaPublishMessage \
type={:?} \
topic={} \
key={} \
headers={:?}",
self.msg_type, self.topic, self.key, self.headers
)
}
}
}
impl std::fmt::Display for KafkaPublishMessage {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
if self.msg_type != KafkaPublishMessageType::Sensitive {
write!(
f,
"KafkaPublishMessage \
type={:?} \
topic={} \
key={} \
headers={:?} \
payload={}",
self.msg_type, self.topic, self.key, self.headers, self.payload,
)
} else {
write!(
f,
"SENSITIVE KafkaPublishMessage \
type={:?} \
topic={} \
key={} \
headers={:?}",
self.msg_type, self.topic, self.key, self.headers
)
}
}
}