torii-mailer 0.5.2

Pluggable email system for the torii authentication ecosystem
Documentation
mod auth_templates;
mod engine;

pub use auth_templates::{
    MagicLinkTemplate, PasswordChangedTemplate, PasswordResetTemplate, TemplateContext,
    WelcomeTemplate,
};
pub use engine::{AskamaTemplateEngine, TemplateEngine};

use crate::MailerError;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TemplateData {
    pub data: HashMap<String, serde_json::Value>,
}

impl TemplateData {
    pub fn new() -> Self {
        Self {
            data: HashMap::new(),
        }
    }

    pub fn insert<T: Serialize>(mut self, key: &str, value: T) -> Result<Self, MailerError> {
        self.data
            .insert(key.to_string(), serde_json::to_value(value)?);
        Ok(self)
    }

    pub fn get(&self, key: &str) -> Option<&serde_json::Value> {
        self.data.get(key)
    }
}

impl Default for TemplateData {
    fn default() -> Self {
        Self::new()
    }
}