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}