Skip to main content

futu_rest/routes/qot/
search.rs

1use axum::extract::{Json, State};
2use prost::Message;
3use serde::Serialize;
4use serde::de::DeserializeOwned;
5use serde_json::Value;
6
7use crate::adapter::{self, RestState};
8
9use super::RawApiResult;
10
11async fn raw_search_request<Req, Rsp>(state: &RestState, proto_id: u32, body: Value) -> RawApiResult
12where
13    Req: Message + Default + DeserializeOwned,
14    Rsp: Message + Default + Serialize,
15{
16    adapter::proto_request_raw::<Req, Rsp>(state, proto_id, Some(body)).await
17}
18
19pub async fn search_quote(State(state): State<RestState>, Json(body): Json<Value>) -> RawApiResult {
20    raw_search_request::<
21        futu_proto::qot_get_search_quote::Request,
22        futu_proto::qot_get_search_quote::Response,
23    >(&state, futu_core::proto_id::QOT_GET_SEARCH_QUOTE, body)
24    .await
25}
26
27pub async fn search_news(State(state): State<RestState>, Json(body): Json<Value>) -> RawApiResult {
28    raw_search_request::<
29        futu_proto::qot_get_search_news::Request,
30        futu_proto::qot_get_search_news::Response,
31    >(&state, futu_core::proto_id::QOT_GET_SEARCH_NEWS, body)
32    .await
33}