google_api_rust_client_unoffical/services/translate_service/
detect_language.rs

1
2use super::{TranslateServiceV2Type, TranslateService, TRANSLATE_SERVICE_BASE_URL};
3
4use serde::{Serialize, Deserialize};
5use anyhow::Result;
6use reqwest::{Client, Url};
7
8impl TranslateService {
9
10
11    /// Detects the language of texts. <br>
12    /// See https://cloud.google.com/translate/docs/basic/detecting-language
13    ///
14    /// * `text` -  an array of strings to upon which to perform language detection.
15    pub async fn detect_language(&mut self, text: Vec<&str>) -> Result<DetectLanguageResponse>{
16
17        let base_url = Url::parse(&format!("{}/v2/{}", TRANSLATE_SERVICE_BASE_URL, TranslateServiceV2Type::Detect.path()))?;
18        let headers = self.base.create_headers().await?;
19        let request_body = DetectLanguageRequest::new(text);
20        let builder = Client::new().post(base_url)
21                .headers(headers)
22                .body(serde_json::to_string(&request_body)?);
23
24        let body = self.base.make_request(builder).await?;
25
26        Ok(serde_json::from_str::<DetectLanguageResponse>(&body)?)
27
28    }
29}
30
31
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35struct DetectLanguageRequest {
36    q: Vec<String>
37}
38
39impl DetectLanguageRequest {
40    fn new(text: Vec<&str>) -> Self {
41        return Self{
42            q: text.into_iter().map(|s| s.to_owned()).collect(),
43        };
44    }
45}
46
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(rename_all = "camelCase")]
50pub struct DetectLanguageResponse {
51    pub data: DetectLanguageResponseList
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
55#[serde(rename_all = "camelCase")]
56pub struct DetectLanguageResponseList {
57    pub detections: Vec<Vec<DetectLanguageResponseListValue>>
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
61#[serde(rename_all = "camelCase")]
62pub struct DetectLanguageResponseListValue {
63    pub language: String
64}