use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ApiRequest {
pub method: String,
pub biz_content: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
impl ApiRequest {
pub fn new(method: impl Into<String>, biz_content: impl Into<String>) -> Self {
Self {
method: method.into(),
biz_content: biz_content.into(),
version: None,
}
}
pub fn with_version(method: impl Into<String>, biz_content: impl Into<String>, version: impl Into<String>) -> Self {
Self {
method: method.into(),
biz_content: biz_content.into(),
version: Some(version.into()),
}
}
pub fn from_params<T: Serialize>(method: impl Into<String>, params: &T) -> Result<Self, serde_json::Error> {
let biz_content = serde_json::to_string(params)?;
Ok(Self {
method: method.into(),
biz_content,
version: None,
})
}
}
#[cfg(test)]
mod tests;