Skip to main content

ezcapsolver/tasks/
tls.rs

1use std::collections::BTreeMap;
2
3use serde::Serialize;
4use serde_json::Value;
5
6use super::ExtraFields;
7
8/// HTTP method accepted by TLS forwarding tasks.
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Default)]
10#[serde(rename_all = "UPPERCASE")]
11pub enum TlsHttpMethod {
12    /// GET request.
13    #[default]
14    Get,
15    /// POST request.
16    Post,
17    /// PUT request.
18    Put,
19    /// DELETE request.
20    Delete,
21    /// PATCH request.
22    Patch,
23}
24
25/// TLS forwarding task.
26#[derive(Debug, Clone, Serialize, Default, bon::Builder)]
27#[builder(on(String, into))]
28#[serde(remote = "Self")]
29pub struct TlsForwardTask {
30    /// Worker TLS fingerprint identifier.
31    pub tls_type: String,
32    /// Proxy used for the upstream request.
33    pub proxy: String,
34    /// Upstream HTTP method.
35    #[builder(default)]
36    pub method: TlsHttpMethod,
37    /// Upstream URL.
38    pub url: String,
39    /// Optional upstream request headers.
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub headers: Option<BTreeMap<String, Value>>,
42    /// Optional serialized header order.
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub headers_order: Option<String>,
45    /// Optional upstream request cookies.
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub cookies: Option<BTreeMap<String, Value>>,
48    /// Optional upstream request body.
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub body: Option<Value>,
51    /// Setting it to true means the body is base64-encoded.
52    #[serde(default)]
53    #[builder(default = false)]
54    pub body_raw: bool,
55    /// Additional worker parameters.
56    #[serde(skip)]
57    #[builder(default)]
58    pub extra: ExtraFields,
59}