1use super::Client;
2use super::Error;
3use super::types_rs::*;
4use crate::translate::utils::parse_json_response;
5use std::collections::HashMap;
6use u_sdk_common::helper::into_header_map;
7use u_sdk_common::open_api_sign::{SignParams, get_openapi_request_header};
8
9impl Client {
10 pub fn translate(&self) -> TranslateBuilder<'_> {
16 Translate::builder(self)
17 }
18
19 pub fn get_detect_language(&self) -> GetDetectLanguageBuilder<'_> {
23 GetDetectLanguage::builder(self)
24 }
25}
26
27impl Translate<'_> {
28 pub async fn send(&self) -> Result<TranslateResponse, Error> {
29 let client = self.client;
30 let creds = client.credentials_provider.load().await?;
31
32 let mut sign_params = SignParams {
33 req_method: "GET",
34 host: &client.host,
35 query_map: self,
36 x_acs_action: "TranslateGeneral",
37 x_acs_version: "2018-10-12",
38 x_acs_security_token: creds.sts_security_token.as_deref(),
39 request_body: None,
40 style: &client.style,
41 };
42 if self.scene != "general" {
43 sign_params.x_acs_action = "Translate";
44 }
45
46 let (common_headers, url_) =
47 get_openapi_request_header(&creds.access_key_secret, &creds.access_key_id, sign_params)
48 .map_err(|e| Error::Common(format!("get_common_headers error: {}", e)))?;
49
50 let header_map = into_header_map(common_headers);
51 let resp = client
52 .http_client
53 .get(url_)
54 .headers(header_map)
55 .send()
56 .await?;
57
58 let res = parse_json_response(resp).await?;
59 Ok(res)
60 }
61}
62
63impl GetDetectLanguage<'_> {
64 pub async fn send(&self) -> Result<String, Error> {
65 let client = self.client;
66 let creds = client.credentials_provider.load().await?;
67
68 let mut query_map = HashMap::new();
69 query_map.insert("SourceText".to_owned(), self.source_text.to_owned());
70
71 let sign_params = SignParams {
72 req_method: "GET",
73 host: &client.host,
74 query_map: &query_map,
75 x_acs_action: "GetDetectLanguage",
76 x_acs_version: "2018-10-12",
77 x_acs_security_token: creds.sts_security_token.as_deref(),
78 request_body: None,
79 style: &client.style,
80 };
81
82 let (common_headers, url_) =
83 get_openapi_request_header(&creds.access_key_secret, &creds.access_key_id, sign_params)
84 .map_err(|e| Error::Common(format!("get_common_headers error: {}", e)))?;
85
86 let header_map = into_header_map(common_headers);
87 let resp = client
88 .http_client
89 .get(url_)
90 .headers(header_map)
91 .send()
92 .await?;
93
94 let res = parse_json_response::<GetDetectLanguageResp>(resp).await?;
95 Ok(res.detected_language)
96 }
97}