1use super::utils::parse_json_response;
2use super::{Client, Error, QueryDomainByParamResult};
3use bon::Builder;
4use serde::Serialize;
5use u_sdk_common::helper::into_header_map;
6use u_sdk_common::open_api_sign::{SignParams, get_openapi_request_header};
7
8#[serde_with::skip_serializing_none]
9#[derive(Builder, Serialize)]
10#[builder(on(String, into))]
11#[serde(rename_all = "PascalCase")]
12pub struct QueryDomainByParam<'a> {
13 #[builder(start_fn)]
14 #[serde(skip_serializing)]
15 client: &'a Client,
16
17 page_no: Option<u32>,
18 page_size: Option<u16>,
19 key_word: Option<String>,
20 status: Option<u8>,
21}
22
23impl QueryDomainByParam<'_> {
24 pub async fn send(&self) -> Result<QueryDomainByParamResult, Error> {
25 let creds = self.client.credentials_provider.load().await?;
26 let sign_params = SignParams {
27 req_method: "GET",
28 host: &self.client.host,
29 query_map: self,
30 x_acs_action: "QueryDomainByParam",
31 x_acs_version: "2015-11-23",
32 x_acs_security_token: creds.sts_security_token.as_deref(),
33 request_body: None,
34 style: &self.client.style,
35 };
36 let (headers, url_) =
37 get_openapi_request_header(&creds.access_key_secret, &creds.access_key_id, sign_params)
38 .map_err(|e| Error::Common(format!("get_common_headers error: {}", e)))?;
39
40 let resp = self
41 .client
42 .http_client
43 .get(url_)
44 .headers(into_header_map(headers))
45 .send()
46 .await?;
47
48 let resp = parse_json_response(resp).await?;
49 Ok(resp)
50 }
51}