ezcapsolver/tasks/
hcaptcha.rs1use serde::Serialize;
2
3use super::ExtraFields;
4
5#[derive(Debug, Clone, Serialize, Default, bon::Builder)]
7#[builder(on(String, into))]
8#[serde(remote = "Self", rename_all = "camelCase")]
9pub struct HcaptchaTask {
10 #[serde(rename = "websiteURL")]
12 pub website_url: String,
13 pub website_key: String,
15 pub lang: String,
17 #[serde(skip_serializing_if = "Option::is_none")]
19 pub proxy: Option<String>,
20 pub invisible: bool,
24 #[serde(rename = "rqdata", skip_serializing_if = "Option::is_none")]
29 pub rq_data: Option<String>,
30 #[serde(skip)]
32 #[builder(default)]
33 pub extra: ExtraFields,
34}
35
36#[derive(Debug, Clone, Serialize, Default, bon::Builder)]
38#[builder(on(String, into))]
39#[serde(remote = "Self", rename_all = "camelCase")]
40pub struct HcaptchaClassificationTask {
41 #[serde(skip_serializing_if = "Option::is_none")]
43 pub image: Option<String>,
44 #[serde(skip_serializing_if = "Option::is_none")]
46 pub images: Option<Vec<String>>,
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub anchors: Option<Vec<String>>,
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub question: Option<String>,
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub module: Option<String>,
56 #[serde(skip)]
58 #[builder(default)]
59 pub extra: ExtraFields,
60}