use serde::{Deserialize, Serialize};
use crate::{field_access, impl_default, impl_display};
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct Request {
realm_id: u64,
filename: String,
}
impl Request {
pub const fn new() -> Self {
Self {
realm_id: 0,
filename: String::new(),
}
}
}
field_access! {
Request {
realm_id: u64,
}
}
field_access! {
Request {
filename: cow { str },
}
}
impl_default!(Request);
impl_display!(Request);
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_request() {
let realm_id = 1;
let filename = "4e/m2A3MSqFnWRLUf9SaPzQ0Up_/zulip.txt";
let request = Request::new()
.with_realm_id(realm_id)
.with_filename(filename);
let request_json = request.to_string();
assert_eq!(serde_json::to_string(&request).unwrap(), request_json);
assert_eq!(
serde_json::from_str::<Request>(&request_json).unwrap(),
request
);
assert_eq!(request.realm_id(), realm_id);
assert_eq!(request.filename(), filename);
}
}