omnihook 0.1.2

Webhook client with payload builders for Slack, Discord, Telegram and generic webhooks with optional HMAC signing and idempotency key support.
Documentation
use serde_json::json;

use super::WebhookPayloadBuilder;

/// A payload builder for Discord notifications.
///
/// Creates a simple `content` field with markdown-formatted text.
///
/// ### JSON Output
/// ```json
/// {
///   "content": "Title\n\nBody message"
/// }
/// ```
#[derive(Default)]
pub struct DiscordPayloadBuilder;

impl WebhookPayloadBuilder for DiscordPayloadBuilder {
    fn build_payload(&self, title: &str, body: &str) -> serde_json::Value {
        let full_message = format!("{title}\n\n{body}");
        json!({
            "content": full_message
        })
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_discord_payload_builder() {
        let payload = DiscordPayloadBuilder.build_payload("Test Title", "Test Message");
        assert_eq!(payload, json!({ "content": "Test Title\n\nTest Message" }));
    }
}