From 4278a811b6a3356e551e5d7f43b6ff77e693a6da Mon Sep 17 00:00:00 2001 From: 0x676e67 Date: Wed, 22 Jan 2025 16:55:32 +0800 Subject: [PATCH] feat: `Impersonate`/`ImpersonateOS` impl serde --- Cargo.toml | 2 +- src/imp/mod.rs | 21 +++++++++------------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9758a9b4..7c39a10e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,7 +73,7 @@ base64 = "0.22" http = "1" url = "2.5" bytes = "1.0" -serde = "1.0" +serde = { version = "1.0", features = ["derive"] } serde_urlencoded = "0.7.1" tower = { version = "0.5.2", default-features = false, features = [ "timeout", diff --git a/src/imp/mod.rs b/src/imp/mod.rs index 508fd107..86d220ff 100644 --- a/src/imp/mod.rs +++ b/src/imp/mod.rs @@ -10,6 +10,7 @@ mod okhttp; mod safari; use http::{HeaderMap, HeaderName}; +use serde::{Deserialize, Serialize}; use typed_builder::TypedBuilder; use Impersonate::*; @@ -60,20 +61,14 @@ pub struct ImpersonateBuilder { /// ========= Impersonate impls ========= impl ImpersonateBuilder { #[inline] - pub fn impersonate(mut self, impersonate: I) -> Self - where - I: Into, - { - self.impersonate = impersonate.into(); + pub fn impersonate(mut self, impersonate: Impersonate) -> Self { + self.impersonate = impersonate; self } #[inline] - pub fn impersonate_os(mut self, impersonate_os: I) -> Self - where - I: Into, - { - self.impersonate_os = impersonate_os.into(); + pub fn impersonate_os(mut self, impersonate_os: ImpersonateOS) -> Self { + self.impersonate_os = impersonate_os; self } @@ -180,7 +175,8 @@ impl From for ImpersonateSettings { } } -#[derive(Clone, Copy, Debug, Default)] +#[derive(Clone, Copy, Debug, Default, Deserialize, Serialize)] +#[serde(rename_all = "snake_case")] pub enum Impersonate { Chrome100, Chrome101, @@ -255,7 +251,8 @@ impl Impersonate { } } -#[derive(Clone, Copy, Debug, Default)] +#[derive(Clone, Copy, Debug, Default, Deserialize, Serialize)] +#[serde(rename_all = "snake_case")] pub enum ImpersonateOS { Windows, #[default]