use derive_builder::Builder;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, Builder)]
#[builder(
derive(Debug, PartialEq, Eq, Hash),
setter(into, strip_option),
build_fn(private, name = "build_internal")
)]
pub struct WebhookMessage {
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub channel: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub username: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub icon_url: Option<String>,
pub text: String,
}
impl WebhookMessage {
pub fn builder() -> WebhookMessageBuilder {
WebhookMessageBuilder::default()
}
}
impl WebhookMessageBuilder {
pub fn build(&self) -> crate::Result<WebhookMessage> {
self.build_internal().map_err(Into::into)
}
#[cfg(test)]
pub(crate) fn build_for_test(&self) -> Result<WebhookMessage, WebhookMessageBuilderError> {
self.build_internal()
}
}