dingtalk_stream/client/
mod.rs1use serde::{Deserialize, Serialize};
6use std::ops::Deref;
7use std::time::Duration;
8
9mod stream_;
10pub use stream_::*;
11use crate::frames::down_message::MessageTopic;
12
13#[derive(Debug, Clone)]
15pub struct ClientConfig {
16 pub auto_reconnect: bool,
18 pub ua: String,
20 pub reconnect_interval: Duration,
22 pub keep_alive_interval: Duration,
24}
25
26impl Default for ClientConfig {
27 fn default() -> Self {
28 Self {
29 auto_reconnect: true,
30 ua: format!("dingtalk-sdk-rust/{}", crate::VERSION),
31 reconnect_interval: Duration::from_secs(10),
32 keep_alive_interval: Duration::from_secs(60),
33 }
34 }
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct Subscription {
40 pub topic: MessageTopic,
42 #[serde(rename = "type")]
44 pub sub_type: String,
45}
46
47#[derive(Debug, Deserialize)]
49pub struct ConnectionResponse {
50 pub endpoint: String,
51 pub ticket: String,
52}
53
54#[derive(Debug, Deserialize)]
56pub struct AccessTokenResponse {
57 #[serde(rename = "accessToken")]
58 pub access_token: String,
59 #[serde(rename = "expireIn")]
60 pub expire_in: i64,
61}
62
63#[derive(Clone)]
65struct AccessTokenCache {
66 token: AccessToken,
67 expire_time: i64,
68}
69#[derive(Clone)]
70pub struct AccessToken(String);
71
72impl Deref for AccessToken {
73 type Target = str;
74
75 fn deref(&self) -> &Self::Target {
76 &self.0
77 }
78}