google_api_rust_client_unoffical/services/translate_service/
detect_language.rs1
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 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}