use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum ErrorCode {
Ok = 0,
NoTarget = 1,
EmptyPayload = 2,
EmptyKey = 3,
InvalidServiceId = 4,
#[allow(unused)]
ErrDecode = 5,
#[allow(unused)]
ErrEncode = 6,
ErrSystem = 7,
TargetNotReady = 8,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct WriteMailRequest {
pub service: String,
pub key: Option<String>,
pub service_id: Option<u32>,
pub payload: String,
pub headers: HashMap<String, String>,
}
impl WriteMailRequest {
pub fn new() -> Self {
Self {
service: String::new(),
key: None,
service_id: None,
payload: String::new(),
headers: HashMap::new(),
}
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct WriteMailResponse {
pub code: i32,
pub msg: Option<String>,
}
impl WriteMailResponse {
pub fn new() -> Self {
Self {
code: ErrorCode::Ok as i32,
msg: None,
}
}
pub fn set_code(&mut self, code: ErrorCode) {
match code {
ErrorCode::Ok => {
self.code = ErrorCode::Ok as i32;
self.msg = Some(String::from("Ok"));
}
ErrorCode::NoTarget => {
self.code = ErrorCode::NoTarget as i32;
self.msg = Some(String::from("NoTarget"));
}
ErrorCode::EmptyPayload => {
self.code = ErrorCode::EmptyPayload as i32;
self.msg = Some(String::from("EmptyPayload"));
}
ErrorCode::EmptyKey => {
self.code = ErrorCode::EmptyKey as i32;
self.msg = Some(String::from("EmptyKey"));
}
ErrorCode::InvalidServiceId => {
self.code = ErrorCode::InvalidServiceId as i32;
self.msg = Some(String::from("InvalidServiceId"));
}
ErrorCode::ErrDecode => {
self.code = ErrorCode::ErrDecode as i32;
self.msg = Some(String::from("ErrDecode"));
}
ErrorCode::ErrEncode => {
self.code = ErrorCode::ErrEncode as i32;
self.msg = Some(String::from("ErrEncode"));
}
ErrorCode::ErrSystem => {
self.code = ErrorCode::ErrSystem as i32;
self.msg = Some(String::from("ErrSystem"));
}
ErrorCode::TargetNotReady => {
self.code = ErrorCode::TargetNotReady as i32;
self.msg = Some(String::from("TargetNotReady"));
}
}
}
}