use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PostAiTranslateRequest {
#[serde(rename = "text")]
pub text: String,
#[serde(rename = "source_lang", skip_serializing_if = "Option::is_none")]
pub source_lang: Option<String>,
#[serde(rename = "style", skip_serializing_if = "Option::is_none")]
pub style: Option<Style>,
#[serde(rename = "context", skip_serializing_if = "Option::is_none")]
pub context: Option<Context>,
#[serde(rename = "preserve_format", skip_serializing_if = "Option::is_none")]
pub preserve_format: Option<bool>,
}
impl PostAiTranslateRequest {
pub fn new(text: String) -> PostAiTranslateRequest {
PostAiTranslateRequest {
text,
source_lang: None,
style: None,
context: None,
preserve_format: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Style {
#[serde(rename = "casual")]
Casual,
#[serde(rename = "professional")]
Professional,
#[serde(rename = "academic")]
Academic,
#[serde(rename = "literary")]
Literary,
}
impl Default for Style {
fn default() -> Style {
Self::Casual
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Context {
#[serde(rename = "general")]
General,
#[serde(rename = "business")]
Business,
#[serde(rename = "technical")]
Technical,
#[serde(rename = "medical")]
Medical,
#[serde(rename = "legal")]
Legal,
#[serde(rename = "marketing")]
Marketing,
#[serde(rename = "entertainment")]
Entertainment,
#[serde(rename = "education")]
Education,
#[serde(rename = "news")]
News,
}
impl Default for Context {
fn default() -> Context {
Self::General
}
}