use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Serialize)]
#[serde(rename_all = "snake_case")]
pub(crate) struct Lang<'a> {
pub source_lang_user_selected: &'a str,
pub target_lang: &'a str,
#[serde(skip_serializing_if = "Option::is_none")]
pub lang_user_selected: Option<&'a str>,
}
#[derive(Debug, Default, Serialize)]
#[serde(rename_all = "snake_case")]
pub(crate) struct TextItem<'a> {
pub text: &'a str,
#[serde(rename = "requestAlternatives")]
pub request_alternatives: i64,
}
#[derive(Debug, Default, Serialize)]
#[serde(rename_all = "snake_case")]
pub(crate) struct Params<'a> {
pub splitting: &'a str,
pub lang: Lang<'a>,
pub texts: Vec<TextItem<'a>>,
pub timestamp: i64,
}
#[derive(Debug, Serialize)]
#[serde(rename_all = "snake_case")]
pub(crate) struct PostData<'a> {
#[serde(rename = "jsonrpc")]
pub json_rpc: &'a str,
pub method: &'a str,
pub id: i64,
pub params: Params<'a>,
}
#[derive(Debug, Default, Serialize)]
#[serde(rename_all = "snake_case")]
pub struct DeepLXTranslationResult {
pub code: i32,
pub id: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
pub data: String,
pub alternatives: Vec<String>,
pub source_lang: String,
pub target_lang: String,
pub method: String,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub(crate) struct Text {
pub text: String,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub(crate) struct Texts {
pub alternatives: Vec<Text>,
pub text: String,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub(crate) struct TranslationResponseResult {
pub texts: Vec<Texts>,
pub lang: String,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub(crate) struct TranslationResponse {
#[serde(rename = "jsonrpc")]
pub json_rpc: String,
pub id: i64,
pub result: TranslationResponseResult,
}