pub mod error;
pub mod types;
mod core;
mod utils;
use serde_json::json;
use core::{crypto, http::HttpClient, payload::verify_payload};
pub use error::CatzError;
use types::SendInput;
pub struct CatzConnect;
impl CatzConnect {
pub async fn send(input: SendInput) -> Result<serde_json::Value, CatzError> {
verify_payload(&input)?;
let final_payload = json!({
"message_type": format!("{:?}", input.message_type),
"channel": format!("{:?}", input.channel),
"template": format!("{:?}", input.template),
"to": input.payload.to,
"otp": input.payload.otp,
});
let encrypted = crypto::encrypt(&final_payload)?;
let client = HttpClient::from_env()?;
let response = client.post("/sdk/send", &encrypted).await?;
Ok(response)
}
}