Skip to main content

milky_rust_sdk/types/
communication.rs

1//! 定义与服务端的通信方式
2
3/// 枚举了可以使用的通信方式。
4#[derive(Clone)]
5pub enum Communication {
6    /// WebSocket
7    WebSocket(WebSocketConfig),
8    /// WebHook
9    WebHook(WebHookConfig),
10}
11
12/// WebSocket的配置项
13#[derive(Clone)]
14pub struct WebSocketConfig {
15    /// 服务端的WebSocket 接入点 e.g. `ws://127.0.0.1:3000`。
16    pub ws_endpoint: String,
17    /// 可选的访问令牌,用于认证。
18    pub access_token: Option<String>,
19}
20
21impl WebSocketConfig {
22    /// 创建一个新的 `WebSocketCofig` 实例。
23    ///
24    /// # 参数
25    /// * `ws_endpoint`: 服务端的WebSocket 接入点 e.g. `ws://127.0.0.1:3000`。
26    /// * `access_token`: 可选的访问令牌,用于认证。
27    ///
28    /// # 返回
29    /// 成功则返回 `Result<Self>`,其中 `Self` 是新创建的 `WebSocket` 实例。
30    /// 如果URL解析失败或协议不受支持,则返回错误。
31    pub fn new(ws_endpoint: String, access_token: Option<String>) -> Self {
32        Self {
33            ws_endpoint,
34            access_token,
35        }
36    }
37}
38
39/// WebHook的配置项
40#[derive(Clone)]
41pub struct WebHookConfig {
42    /// http service主机地址,默认 `127.0.0.1`。
43    pub host: String,
44    /// 本机开放http service的端口。
45    pub port: i32,
46    /// 服务端的Http 接入点 e.g. `http://127.0.0.1:3000`。
47    pub http_endpoint: String,
48    /// 可选的访问令牌,用于认证。
49    pub access_token: Option<String>,
50}
51
52impl WebHookConfig {
53    /// 创建一个新的 `WebSocketCofig` 实例。
54    ///
55    /// # 参数
56    /// * `host`: http service主机地址(可选),默认 `127.0.0.1`
57    /// * `port`: 本机开放http service的端口。
58    /// * `http_endpoint`: 服务端的Http服务 接入点 e.g. `https://127.0.0.1:3000`。
59    /// * `access_token`: 可选的访问令牌,用于认证。
60    ///
61    /// # 返回
62    /// 成功则返回 `Result<Self>`,其中 `Self` 是新创建的 `WebSocket` 实例。
63    /// 如果URL解析失败或协议不受支持,则返回错误。
64    pub fn new(
65        host: Option<String>,
66        port: i32,
67        http_endpoint: String,
68        access_token: Option<String>,
69    ) -> Self {
70        let host = match host {
71            Some(_host) => _host,
72            None => "127.0.0.1".to_string(),
73        };
74        Self {
75            host,
76            port,
77            http_endpoint,
78            access_token,
79        }
80    }
81}