wecom_rs/client/common/model/
mod.rs

1use 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    /// 分页游标,下次请求时填写以获取之后分页的记录。如果该字段返回空则表示已没有更多数据
17    #[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
48/// token
49mod token;
50pub(crate) use token::Token;
51
52mod common;
53pub use common::*;