use std::collections::BTreeMap;
use serde::Serialize;
use serde_json::Value;
use super::ExtraFields;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Default)]
pub enum DataDomeStep {
#[serde(rename = "1")]
#[default]
One,
#[serde(rename = "2")]
Two,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum DataDomeJsType {
#[default]
Ch,
Le,
}
#[derive(Debug, Clone, Serialize, Default, bon::Builder)]
#[builder(on(String, into))]
#[serde(remote = "Self")]
pub struct DataDomeTask {
pub html_b64: String,
#[builder(default)]
pub step: DataDomeStep,
#[builder(default)]
pub image: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub referer: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub equipment: Option<String>,
#[serde(skip)]
#[builder(default)]
pub extra: ExtraFields,
}
const MIN_PACKET_COUNTER: u64 = 1;
#[derive(Debug, Clone, Serialize, bon::Builder)]
#[builder(on(String, into))]
#[serde(remote = "Self")]
pub struct DataDomeTagsTask {
pub ddk: String,
#[builder(default)]
pub jstype: DataDomeJsType,
#[builder(default)]
pub cid: String,
pub bpc: u64,
pub referer: String,
pub ua: String,
#[builder(default)]
pub fields: BTreeMap<String, Value>,
#[serde(skip)]
#[builder(default)]
pub extra: ExtraFields,
}
impl Default for DataDomeTagsTask {
fn default() -> Self {
Self {
ddk: String::new(),
jstype: DataDomeJsType::default(),
cid: String::new(),
bpc: MIN_PACKET_COUNTER,
referer: String::new(),
ua: String::new(),
fields: BTreeMap::new(),
extra: ExtraFields::new(),
}
}
}