translate_service/
translate_service.rs1use dotenvy::dotenv;
2use google_api_rust_client_unoffical::{auth::service_account::ServiceAccountCredentials, services::translate_service::TranslateService};
3use serde_json::Value;
4use std::{collections::HashMap, env, path::PathBuf, str::FromStr, vec};
5use anyhow::Result;
6
7#[tokio::main]
8async fn main() -> Result<()> {
9 dotenv().ok();
10
11 translate().await?;
13
14 list_languages().await?;
16
17 detect_language().await?;
19
20 Ok(())
21}
22
23
24async fn translate() -> Result<()> {
25 dotenv().ok();
26
27 let api_key = env::var("API_KEY")?;
29 let mut translation_service = TranslateService::new_with_api_key(api_key);
30 let response = translation_service.translate(vec!["test"], "ja", None).await?;
31 println!("response: {}", serde_json::to_string(&response)?);
32
33 let filepath: PathBuf = PathBuf::from_str("credentials.json")?;
35 let credentials = ServiceAccountCredentials::from_service_account_file(filepath)?;
36 let mut translation_service = TranslateService::new_with_credentials(credentials);
37 let response = translation_service.translate(vec!["test"], "ja", None).await?;
38 println!("response: {}", serde_json::to_string(&response)?);
39 let mut params: HashMap<String, Value> = HashMap::new();
40 params.insert("format".to_string(), "text".into());
41 params.insert("source".to_string(), "en".into());
42 params.insert(" model".to_string(), "base".into());
43 let response_with_params = translation_service.translate(vec!["test2"], "ja", Some(params)).await?;
44 println!("response_with_params: {}", serde_json::to_string(&response_with_params)?);
45
46 Ok(())
47}
48
49
50async fn list_languages() -> Result<()> {
51 dotenv().ok();
52
53 let api_key = env::var("API_KEY")?;
55 let mut translation_service = TranslateService::new_with_api_key(api_key);
56 let response = translation_service.list_languages(Some("ja"), None).await?;
57 println!("response: {}", serde_json::to_string(&response)?);
58
59 let filepath: PathBuf = PathBuf::from_str("credentials.json")?;
61 let credentials = ServiceAccountCredentials::from_service_account_file(filepath)?;
62 let mut translation_service = TranslateService::new_with_credentials(credentials);
63 let response = translation_service.list_languages(Some("ja"), None).await?;
64 println!("response: {}", serde_json::to_string(&response)?);
65
66 Ok(())
67}
68
69
70async fn detect_language() -> Result<()> {
71 dotenv().ok();
72
73 let api_key = env::var("API_KEY")?;
75 let mut translation_service = TranslateService::new_with_api_key(api_key);
76 let response = translation_service.detect_language(vec!["test", "テスト"]).await?;
77 println!("response: {}", serde_json::to_string(&response)?);
78
79 let filepath: PathBuf = PathBuf::from_str("credentials.json")?;
81 let credentials = ServiceAccountCredentials::from_service_account_file(filepath)?;
82 let mut translation_service = TranslateService::new_with_credentials(credentials);
83 let response = translation_service.detect_language(vec!["test", "テスト"]).await?;
84 println!("response: {}", serde_json::to_string(&response)?);
85
86 Ok(())
87}