translate_service/
translate_service.rs

1use 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
12    translate().await?;
13
14    // list languages
15    list_languages().await?;
16
17    // detect language
18    detect_language().await?;
19
20    Ok(())
21}
22
23
24async fn translate() -> Result<()> {
25    dotenv().ok();
26
27    // api auth
28    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    // service account auth
34    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    // api auth
54    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    // service account auth
60    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    // api auth
74    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    // service account auth
80    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}