wecom_rs/client/common/model/
mod.rs1use serde::{Deserialize, Serialize};
2
3pub trait Responser: Default {
4 fn error_code(&self) -> u64;
5 fn error_message(&self) -> String;
6}
7
8#[derive(Debug, Deserialize, Serialize)]
9pub(crate) struct Response<T> {
10 #[serde(rename = "errcode")]
11 pub err_code: u64,
12 #[serde(rename = "errmsg")]
13 pub err_msg: String,
14 #[serde(flatten)]
15 pub data: Option<T>,
16 #[serde(skip_serializing_if = "Option::is_none")]
18 pub next_cursor: Option<String>,
19}
20
21impl<T> Responser for Response<T>
22where
23 T: Default,
24{
25 fn error_code(&self) -> u64 {
26 self.err_code
27 }
28
29 fn error_message(&self) -> String {
30 self.err_msg.clone()
31 }
32}
33
34impl<T> Default for Response<T>
35where
36 T: Default,
37{
38 fn default() -> Self {
39 Self {
40 err_code: Default::default(),
41 err_msg: Default::default(),
42 data: Default::default(),
43 next_cursor: None,
44 }
45 }
46}
47
48mod token;
50pub(crate) use token::Token;
51
52mod common;
53pub use common::*;