use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use serde_json::Value;
pub type Params = HashMap<String, Value>;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Request {
pub method: String,
pub params: Params,
pub ts: u128,
pub version: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Response {
pub ts: u128,
pub absfilepath: String,
pub hash: String,
pub filename: String,
pub shortpath: String,
pub pathid: String,
pub shortpathid: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OutputJsonMessage {
pub request: Request,
#[serde(skip_serializing_if = "Option::is_none")]
pub response: Option<Response>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<super::error::ErrorMessage>,
}
impl OutputJsonMessage {
pub fn success(request: Request, response: Response) -> Self {
Self {
request,
response: Some(response),
error: None,
}
}
pub fn error(request: Request, error: super::error::ErrorMessage) -> Self {
Self {
request,
response: None,
error: Some(error),
}
}
}