futu_rest/routes/
sys.rs

1//! 系统 REST API 路由
2
3use axum::extract::{Json, State};
4use axum::http::StatusCode;
5use serde_json::Value;
6
7use futu_core::proto_id;
8use futu_proto::get_delay_statistics;
9use futu_proto::get_global_state;
10use futu_proto::get_user_info;
11
12use crate::adapter::{self, RestState};
13
14type ApiResult = Result<Json<Value>, (StatusCode, Json<Value>)>;
15
16/// GET /api/global-state — 获取全局状态
17pub async fn get_global_state(State(state): State<RestState>) -> ApiResult {
18    adapter::proto_request::<get_global_state::Request, get_global_state::Response>(
19        &state,
20        proto_id::GET_GLOBAL_STATE,
21        None,
22    )
23    .await
24}
25
26/// GET /api/user-info — 获取用户信息
27pub async fn get_user_info(State(state): State<RestState>) -> ApiResult {
28    adapter::proto_request::<get_user_info::Request, get_user_info::Response>(
29        &state,
30        proto_id::GET_USER_INFO,
31        None,
32    )
33    .await
34}
35
36/// GET /api/delay-statistics — 获取延迟统计
37pub async fn get_delay_statistics(State(state): State<RestState>) -> ApiResult {
38    adapter::proto_request::<get_delay_statistics::Request, get_delay_statistics::Response>(
39        &state,
40        proto_id::GET_DELAY_STATISTICS,
41        None,
42    )
43    .await
44}