use crate::action::incoming;
use crate::action::outgoing;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::formatter::outgoing_type::MessageType;
#[derive(Debug, Deserialize, Serialize)]
pub struct Config {
pub whatsapp_base_url: String,
pub whatsapp_version: String,
pub whatsapp_business_id: String,
pub whatsapp_phone_number_id: String,
pub whatsapp_system_user_token: String,
}
impl Config {
pub fn from(
whatsapp_base_url: String,
whatsapp_version: String,
whatsapp_business_id: String,
whatsapp_phone_number_id: String,
whatsapp_system_user_token: String,
) -> Self {
Config {
whatsapp_base_url,
whatsapp_version,
whatsapp_business_id,
whatsapp_phone_number_id,
whatsapp_system_user_token,
}
}
pub fn incoming_message(self, payload: &str) -> Result<(Vec<Value>, Vec<String>), String> {
incoming::find_messages(self, payload)
}
pub fn incoming_statuses(self, payload: &str) -> Result<(Vec<Value>, Vec<String>), String> {
incoming::find_statuses(self, payload)
}
pub async fn outgoing(self, message: MessageType) -> Result<Value, reqwest::Error> {
outgoing::send(&self, &message).await
}
}