1use 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
16pub 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
26pub 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
36pub 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}