use std::collections::BTreeMap;
use serde::Serialize;
use serde_json::Value;
use super::ExtraFields;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Default)]
#[serde(rename_all = "UPPERCASE")]
pub enum TlsHttpMethod {
#[default]
Get,
Post,
Put,
Delete,
Patch,
}
#[derive(Debug, Clone, Serialize, Default, bon::Builder)]
#[builder(on(String, into))]
#[serde(remote = "Self")]
pub struct TlsForwardTask {
pub tls_type: String,
pub proxy: String,
#[builder(default)]
pub method: TlsHttpMethod,
pub url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub headers: Option<BTreeMap<String, Value>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub headers_order: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cookies: Option<BTreeMap<String, Value>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub body: Option<Value>,
#[serde(default)]
#[builder(default = false)]
pub body_raw: bool,
#[serde(skip)]
#[builder(default)]
pub extra: ExtraFields,
}