use serde::Serialize;
use validator::Validate;
#[derive(Debug, Clone, Serialize)]
pub enum OcrToolType {
#[serde(rename = "hand_write")]
HandWrite,
}
#[derive(Debug, Clone, Serialize)]
pub enum OcrLanguageType {
#[serde(rename = "AUTO")]
Auto,
#[serde(rename = "CHN_ENG")]
ChnEng,
#[serde(rename = "ENG")]
Eng,
#[serde(rename = "JAP")]
Jap,
#[serde(rename = "KOR")]
Kor,
#[serde(rename = "FRE")]
Fre,
#[serde(rename = "SPA")]
Spa,
#[serde(rename = "POR")]
Por,
#[serde(rename = "GER")]
Ger,
#[serde(rename = "ITA")]
Ita,
#[serde(rename = "RUS")]
Rus,
#[serde(rename = "DAN")]
Dan,
#[serde(rename = "DUT")]
Dut,
#[serde(rename = "MAL")]
Mal,
#[serde(rename = "SWE")]
Swe,
#[serde(rename = "IND")]
Ind,
#[serde(rename = "POL")]
Pol,
#[serde(rename = "ROM")]
Rom,
#[serde(rename = "TUR")]
Tur,
#[serde(rename = "GRE")]
Gre,
#[serde(rename = "HUN")]
Hun,
#[serde(rename = "THA")]
Tha,
#[serde(rename = "VIE")]
Vie,
#[serde(rename = "ARA")]
Ara,
#[serde(rename = "HIN")]
Hin,
}
#[derive(Debug, Clone, Serialize, Validate)]
pub struct OcrBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_type: Option<OcrToolType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_type: Option<OcrLanguageType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub probability: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub request_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[validate(length(min = 6, max = 128))]
pub user_id: Option<String>,
}
impl Default for OcrBody {
fn default() -> Self {
Self::new()
}
}
impl OcrBody {
pub fn new() -> Self {
Self {
tool_type: None,
language_type: None,
probability: None,
request_id: None,
user_id: None,
}
}
pub fn with_tool_type(mut self, tool_type: OcrToolType) -> Self {
self.tool_type = Some(tool_type);
self
}
pub fn with_language_type(mut self, language_type: OcrLanguageType) -> Self {
self.language_type = Some(language_type);
self
}
pub fn with_probability(mut self, probability: bool) -> Self {
self.probability = Some(probability);
self
}
pub fn with_request_id(mut self, request_id: impl Into<String>) -> Self {
self.request_id = Some(request_id.into());
self
}
pub fn with_user_id(mut self, user_id: impl Into<String>) -> Self {
self.user_id = Some(user_id.into());
self
}
}