1use std::collections::BTreeMap;
2
3use serde_json::Value;
4
5macro_rules! impl_task_serialize {
13 ($($ty:ident),+ $(,)?) => {$(
14 impl serde::Serialize for $ty {
15 fn serialize<S>(&self, serializer: S) -> ::std::result::Result<S::Ok, S::Error>
16 where
17 S: serde::Serializer,
18 {
19 $crate::wire::merge_extra(|s| <$ty>::serialize(self, s), &self.extra, serializer)
20 }
21 }
22 )+};
23}
24
25mod akamai;
26mod cloudflare;
27mod datadome;
28mod funcaptcha;
29mod hcaptcha;
30mod incapsula;
31mod perimeterx;
32mod recaptcha;
33mod tls;
34
35pub use akamai::{AkamaiSbsdTask, AkamaiSbsdTaskBuilder, AkamaiWebTask, AkamaiWebTaskBuilder};
36pub use cloudflare::{
37 Cloudflare5sTask, Cloudflare5sTaskBuilder, CloudflareTurnstileTask,
38 CloudflareTurnstileTaskBuilder,
39};
40pub use datadome::{
41 DataDomeJsType, DataDomeStep, DataDomeTagsTask, DataDomeTagsTaskBuilder, DataDomeTask,
42 DataDomeTaskBuilder,
43};
44pub use funcaptcha::{
45 FunCaptchaClassificationTask, FunCaptchaClassificationTaskBuilder, FunCaptchaTask,
46 FunCaptchaTaskBuilder,
47};
48pub use hcaptcha::{
49 HcaptchaClassificationTask, HcaptchaClassificationTaskBuilder, HcaptchaTask,
50 HcaptchaTaskBuilder,
51};
52pub use incapsula::{IncapsulaTask, IncapsulaTaskBuilder};
53pub use perimeterx::{PerimeterXTask, PerimeterXTaskBuilder};
54pub use recaptcha::{
55 RecaptchaV2ClassificationTask, RecaptchaV2ClassificationTaskBuilder, RecaptchaV2Task,
56 RecaptchaV2TaskBuilder, RecaptchaV3Task, RecaptchaV3TaskBuilder,
57};
58pub use tls::{TlsForwardTask, TlsForwardTaskBuilder, TlsHttpMethod};
59
60impl_task_serialize!(
61 AkamaiSbsdTask,
62 AkamaiWebTask,
63 Cloudflare5sTask,
64 CloudflareTurnstileTask,
65 DataDomeTagsTask,
66 DataDomeTask,
67 FunCaptchaClassificationTask,
68 FunCaptchaTask,
69 HcaptchaClassificationTask,
70 HcaptchaTask,
71 IncapsulaTask,
72 PerimeterXTask,
73 RecaptchaV2ClassificationTask,
74 RecaptchaV2Task,
75 RecaptchaV3Task,
76 TlsForwardTask,
77);
78
79pub type ExtraFields = BTreeMap<String, Value>;