ezcapsolver/tasks/
datadome.rs1use std::collections::BTreeMap;
2
3use serde::Serialize;
4use serde_json::Value;
5
6use super::ExtraFields;
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Default)]
10pub enum DataDomeStep {
11 #[serde(rename = "1")]
13 #[default]
14 One,
15 #[serde(rename = "2")]
17 Two,
18}
19
20#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Default)]
22#[serde(rename_all = "lowercase")]
23pub enum DataDomeJsType {
24 #[default]
26 Ch,
27 Le,
29}
30
31#[derive(Debug, Clone, Serialize, Default, bon::Builder)]
33#[builder(on(String, into))]
34#[serde(remote = "Self")]
35pub struct DataDomeTask {
36 pub html_b64: String,
38 #[builder(default)]
40 pub step: DataDomeStep,
41 #[builder(default)]
43 pub image: String,
44 #[serde(skip_serializing_if = "Option::is_none")]
46 pub referer: Option<String>,
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub parent_url: Option<String>,
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub equipment: Option<String>,
53 #[serde(skip)]
55 #[builder(default)]
56 pub extra: ExtraFields,
57}
58
59const MIN_PACKET_COUNTER: u64 = 1;
64
65#[derive(Debug, Clone, Serialize, bon::Builder)]
67#[builder(on(String, into))]
68#[serde(remote = "Self")]
69pub struct DataDomeTagsTask {
70 pub ddk: String,
72 #[builder(default)]
74 pub jstype: DataDomeJsType,
75 #[builder(default)]
77 pub cid: String,
78 pub bpc: u64,
82 pub referer: String,
84 pub ua: String,
86 #[builder(default)]
88 pub fields: BTreeMap<String, Value>,
89 #[serde(skip)]
91 #[builder(default)]
92 pub extra: ExtraFields,
93}
94
95impl Default for DataDomeTagsTask {
96 fn default() -> Self {
97 Self {
98 ddk: String::new(),
99 jstype: DataDomeJsType::default(),
100 cid: String::new(),
101 bpc: MIN_PACKET_COUNTER,
102 referer: String::new(),
103 ua: String::new(),
104 fields: BTreeMap::new(),
105 extra: ExtraFields::new(),
106 }
107 }
108}