diff options
Diffstat (limited to 'src/modules/router/deepl.rs')
| -rw-r--r-- | src/modules/router/deepl.rs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/modules/router/deepl.rs b/src/modules/router/deepl.rs new file mode 100644 index 0000000..d4e210f --- /dev/null +++ b/src/modules/router/deepl.rs @@ -0,0 +1,50 @@ +// This file is part of Locus <https://github.com/gemrest/locus>. +// Copyright (C) 2022-2022 Fuwn <[email protected]> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 3. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +// +// Copyright (C) 2022-2022 Fuwn <[email protected]> +// SPDX-License-Identifier: GPL-3.0-only + +#[derive(serde::Deserialize)] +pub struct DeepL { + translations: Vec<Translation>, +} + +impl DeepL { + pub fn text(&self) -> String { self.translations[0].text.clone() } +} + +#[derive(serde::Deserialize)] +struct Translation { + pub text: String, +} + +pub fn translate(text: &str, language: &str) -> DeepL { + let deepl_response: DeepL = serde_json::from_str( + &reqwest::blocking::Client::new() + .post("https://api-free.deepl.com/v2/translate") + .header( + "Authorization", + "DeepL-Auth-Key 182c8c21-730e-f99d-8f2e-61e9cc861faa:fx", + ) + .form(&[("text", text), ("target_lang", language)]) + .send() + .unwrap() + .text() + .unwrap(), + ) + .unwrap(); + + deepl_response +} |