use serde::Serialize;
use super::ExtraFields;
const V3_DEFAULT_IS_INVISIBLE: bool = true;
const DEFAULT_CLASSIFICATION_SIZE: i32 = 4;
#[derive(Debug, Clone, Serialize, Default, bon::Builder)]
#[builder(on(String, into))]
#[serde(remote = "Self", rename_all = "camelCase")]
pub struct RecaptchaV2Task {
#[serde(rename = "websiteURL")]
pub website_url: String,
pub website_key: String,
#[serde(rename = "isInvisible")]
#[builder(default)]
pub is_invisible: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub sa: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub s: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub website_title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proxy: Option<String>,
#[serde(skip)]
#[builder(default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Serialize, bon::Builder)]
#[builder(on(String, into))]
#[serde(remote = "Self", rename_all = "camelCase")]
pub struct RecaptchaV3Task {
#[serde(rename = "websiteURL")]
pub website_url: String,
pub website_key: String,
#[serde(rename = "isInvisible")]
#[builder(default = V3_DEFAULT_IS_INVISIBLE)]
pub is_invisible: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_action: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub website_title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub check_field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proxy: Option<String>,
#[serde(skip)]
#[builder(default)]
pub extra: ExtraFields,
}
impl Default for RecaptchaV3Task {
fn default() -> Self {
Self {
website_url: String::new(),
website_key: String::new(),
is_invisible: V3_DEFAULT_IS_INVISIBLE,
page_action: None,
website_title: None,
check_field: None,
proxy: None,
extra: ExtraFields::new(),
}
}
}
#[derive(Debug, Clone, Serialize, bon::Builder)]
#[builder(on(String, into))]
#[serde(remote = "Self", rename_all = "camelCase")]
pub struct RecaptchaV2ClassificationTask {
pub image: String,
pub question: String,
#[builder(default = DEFAULT_CLASSIFICATION_SIZE)]
pub size: i32,
#[serde(skip)]
#[builder(default)]
pub extra: ExtraFields,
}
impl Default for RecaptchaV2ClassificationTask {
fn default() -> Self {
Self {
image: String::new(),
question: String::new(),
size: DEFAULT_CLASSIFICATION_SIZE,
extra: ExtraFields::new(),
}
}
}