From d8ffa01d06396c59cb85529179e2e32c6075bfbe Mon Sep 17 00:00:00 2001 From: Dhurba Baral Date: Mon, 11 May 2026 16:50:55 +1000 Subject: [PATCH 1/2] feat(emulation): expose Chrome 146-147, Edge 146-147, Firefox 148-149 --- README.md | 6 +++--- lib/wreq_ruby/emulation.rb | 6 ++++++ src/emulate.rs | 12 ++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e90ad48..0e53fc6 100644 --- a/README.md +++ b/README.md @@ -88,9 +88,9 @@ Most browser device models share identical TLS and HTTP/2 configurations, differ | **Browser** | **Versions** | | ----------- | ------------ | - | **Chrome** | `Chrome100`, `Chrome101`, `Chrome104`, `Chrome105`, `Chrome106`, `Chrome107`, `Chrome108`, `Chrome109`, `Chrome110`, `Chrome114`, `Chrome116`, `Chrome117`, `Chrome118`, `Chrome119`, `Chrome120`, `Chrome123`, `Chrome124`, `Chrome126`, `Chrome127`, `Chrome128`, `Chrome129`, `Chrome130`, `Chrome131`, `Chrome132`, `Chrome133`, `Chrome134`, `Chrome135`, `Chrome136`, `Chrome137`, `Chrome138`, `Chrome139`, `Chrome140`, `Chrome141`, `Chrome142`, `Chrome143`, `Chrome144`, `Chrome145` | - | **Edge** | `Edge101`, `Edge122`, `Edge127`, `Edge131`, `Edge134`, `Edge135`, `Edge136`, `Edge137`, `Edge138`, `Edge139`, `Edge140`, `Edge141`, `Edge142`, `Edge143`, `Edge144`, `Edge145` | - | **Firefox** | `Firefox109`, `Firefox117`, `Firefox128`, `Firefox133`, `Firefox135`, `FirefoxPrivate135`, `FirefoxAndroid135`, `Firefox136`, `FirefoxPrivate136`, `Firefox139`, `Firefox142`, `Firefox143`, `Firefox144`, `Firefox145`, `Firefox146`, `Firefox147` | + | **Chrome** | `Chrome100`, `Chrome101`, `Chrome104`, `Chrome105`, `Chrome106`, `Chrome107`, `Chrome108`, `Chrome109`, `Chrome110`, `Chrome114`, `Chrome116`, `Chrome117`, `Chrome118`, `Chrome119`, `Chrome120`, `Chrome123`, `Chrome124`, `Chrome126`, `Chrome127`, `Chrome128`, `Chrome129`, `Chrome130`, `Chrome131`, `Chrome132`, `Chrome133`, `Chrome134`, `Chrome135`, `Chrome136`, `Chrome137`, `Chrome138`, `Chrome139`, `Chrome140`, `Chrome141`, `Chrome142`, `Chrome143`, `Chrome144`, `Chrome145`, `Chrome146`, `Chrome147` | + | **Edge** | `Edge101`, `Edge122`, `Edge127`, `Edge131`, `Edge134`, `Edge135`, `Edge136`, `Edge137`, `Edge138`, `Edge139`, `Edge140`, `Edge141`, `Edge142`, `Edge143`, `Edge144`, `Edge145`, `Edge146`, `Edge147` | + | **Firefox** | `Firefox109`, `Firefox117`, `Firefox128`, `Firefox133`, `Firefox135`, `FirefoxPrivate135`, `FirefoxAndroid135`, `Firefox136`, `FirefoxPrivate136`, `Firefox139`, `Firefox142`, `Firefox143`, `Firefox144`, `Firefox145`, `Firefox146`, `Firefox147`, `Firefox148`, `Firefox149` | | **Safari** | `Safari15_3`, `Safari15_5`, `Safari15_6_1`, `Safari16`, `Safari16_5`, `Safari17_0`, `Safari17_2_1`, `Safari17_4_1`, `Safari17_5`, `Safari17_6`, `Safari18`, `Safari18_2`, `Safari18_3`, `Safari18_3_1`, `Safari18_5`, `Safari26`, `Safari26_1`, `Safari26_2`, `SafariIos16_5`, `SafariIos17_2`, `SafariIos17_4_1`, `SafariIos18_1_1`, `SafariIos26`, `SafariIos26_2`, `SafariIPad18`, `SafariIPad26`, `SafariIpad26_2` | | **OkHttp** | `OkHttp3_9`, `OkHttp3_11`, `OkHttp3_13`, `OkHttp3_14`, `OkHttp4_9`, `OkHttp4_10`, `OkHttp4_12`, `OkHttp5` | | **Opera** | `Opera116`, `Opera117`, `Opera118`, `Opera119` | diff --git a/lib/wreq_ruby/emulation.rb b/lib/wreq_ruby/emulation.rb index b71cb55..d2e43da 100644 --- a/lib/wreq_ruby/emulation.rb +++ b/lib/wreq_ruby/emulation.rb @@ -50,6 +50,8 @@ class EmulationDevice Chrome143 = nil Chrome144 = nil Chrome145 = nil + Chrome146 = nil + Chrome147 = nil Edge101 = nil Edge122 = nil Edge127 = nil @@ -66,6 +68,8 @@ class EmulationDevice Edge143 = nil Edge144 = nil Edge145 = nil + Edge146 = nil + Edge147 = nil Firefox109 = nil Firefox117 = nil Firefox128 = nil @@ -82,6 +86,8 @@ class EmulationDevice Firefox145 = nil Firefox146 = nil Firefox147 = nil + Firefox148 = nil + Firefox149 = nil SafariIos17_2 = nil SafariIos17_4_1 = nil SafariIos16_5 = nil diff --git a/src/emulate.rs b/src/emulate.rs index b73ede4..2c52113 100644 --- a/src/emulate.rs +++ b/src/emulate.rs @@ -46,6 +46,8 @@ define_ruby_enum!( Chrome143, Chrome144, Chrome145, + Chrome146, + Chrome147, Edge101, Edge122, Edge127, @@ -62,6 +64,8 @@ define_ruby_enum!( Edge143, Edge144, Edge145, + Edge146, + Edge147, Firefox109, Firefox117, Firefox128, @@ -78,6 +82,8 @@ define_ruby_enum!( Firefox145, Firefox146, Firefox147, + Firefox148, + Firefox149, SafariIos17_2, SafariIos17_4_1, SafariIos16_5, @@ -229,6 +235,8 @@ pub fn include(ruby: &Ruby, gem_module: &RModule) -> Result<(), Error> { emulation_class.const_set("Chrome143", EmulationDevice::Chrome143)?; emulation_class.const_set("Chrome144", EmulationDevice::Chrome144)?; emulation_class.const_set("Chrome145", EmulationDevice::Chrome145)?; + emulation_class.const_set("Chrome146", EmulationDevice::Chrome146)?; + emulation_class.const_set("Chrome147", EmulationDevice::Chrome147)?; emulation_class.const_set("Edge101", EmulationDevice::Edge101)?; emulation_class.const_set("Edge122", EmulationDevice::Edge122)?; emulation_class.const_set("Edge127", EmulationDevice::Edge127)?; @@ -245,6 +253,8 @@ pub fn include(ruby: &Ruby, gem_module: &RModule) -> Result<(), Error> { emulation_class.const_set("Edge143", EmulationDevice::Edge143)?; emulation_class.const_set("Edge144", EmulationDevice::Edge144)?; emulation_class.const_set("Edge145", EmulationDevice::Edge145)?; + emulation_class.const_set("Edge146", EmulationDevice::Edge146)?; + emulation_class.const_set("Edge147", EmulationDevice::Edge147)?; emulation_class.const_set("Firefox109", EmulationDevice::Firefox109)?; emulation_class.const_set("Firefox117", EmulationDevice::Firefox117)?; emulation_class.const_set("Firefox128", EmulationDevice::Firefox128)?; @@ -261,6 +271,8 @@ pub fn include(ruby: &Ruby, gem_module: &RModule) -> Result<(), Error> { emulation_class.const_set("Firefox145", EmulationDevice::Firefox145)?; emulation_class.const_set("Firefox146", EmulationDevice::Firefox146)?; emulation_class.const_set("Firefox147", EmulationDevice::Firefox147)?; + emulation_class.const_set("Firefox148", EmulationDevice::Firefox148)?; + emulation_class.const_set("Firefox149", EmulationDevice::Firefox149)?; emulation_class.const_set("SafariIos17_2", EmulationDevice::SafariIos17_2)?; emulation_class.const_set("SafariIos17_4_1", EmulationDevice::SafariIos17_4_1)?; emulation_class.const_set("SafariIos16_5", EmulationDevice::SafariIos16_5)?; From 511f57646fe7a24a507ceac2a66d15ecc179d3c6 Mon Sep 17 00:00:00 2001 From: 0x676e67 Date: Mon, 18 May 2026 09:31:09 +0800 Subject: [PATCH 2/2] update deps --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- lib/wreq_ruby/emulation.rb | 11 +++++++++++ src/emulate.rs | 33 ++++++++++++++++++++++++++++++++- 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2a8b4ac..a85016b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1489,9 +1489,9 @@ dependencies = [ [[package]] name = "wreq-util" -version = "3.0.0-rc.10" +version = "3.0.0-rc.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6bbe24d28beb9ceb58b514bd6a613c759d3b706f768b9d2950d5d35b543c04" +checksum = "b51558351cf26c9a5daeabf5df5bfab13f1666fa783ad7ddb9a573e04d7fae0a" dependencies = [ "typed-builder", "wreq", diff --git a/Cargo.toml b/Cargo.toml index 6a9d713..be40de7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ wreq = { version = "6.0.0-rc.28", features = [ "deflate", "zstd", ] } -wreq-util = "3.0.0-rc.10" +wreq-util = "3.0.0-rc.11" serde = { version = "1.0.228", features = ["derive"] } serde_magnus = "0.11.0" indexmap = { version = "2.14.0", features = ["serde"] } diff --git a/lib/wreq_ruby/emulation.rb b/lib/wreq_ruby/emulation.rb index d2e43da..ff2afa8 100644 --- a/lib/wreq_ruby/emulation.rb +++ b/lib/wreq_ruby/emulation.rb @@ -127,6 +127,17 @@ class EmulationDevice Opera117 = nil Opera118 = nil Opera119 = nil + Opera120 = nil + Opera121 = nil + Opera122 = nil + Opera123 = nil + Opera124 = nil + Opera125 = nil + Opera126 = nil + Opera127 = nil + Opera128 = nil + Opera129 = nil + Opera130 = nil end unless method_defined?(:to_s) diff --git a/src/emulate.rs b/src/emulate.rs index 2c52113..3cc8a2f 100644 --- a/src/emulate.rs +++ b/src/emulate.rs @@ -48,6 +48,7 @@ define_ruby_enum!( Chrome145, Chrome146, Chrome147, + Edge101, Edge122, Edge127, @@ -66,6 +67,7 @@ define_ruby_enum!( Edge145, Edge146, Edge147, + Firefox109, Firefox117, Firefox128, @@ -84,6 +86,7 @@ define_ruby_enum!( Firefox147, Firefox148, Firefox149, + SafariIos17_2, SafariIos17_4_1, SafariIos16_5, @@ -111,6 +114,7 @@ define_ruby_enum!( SafariIos26_2, SafariIPad26, SafariIpad26_2, + OkHttp3_9, OkHttp3_11, OkHttp3_13, @@ -119,10 +123,22 @@ define_ruby_enum!( OkHttp4_10, OkHttp4_12, OkHttp5, + Opera116, Opera117, Opera118, - Opera119 + Opera119, + Opera120, + Opera121, + Opera122, + Opera123, + Opera124, + Opera125, + Opera126, + Opera127, + Opera128, + Opera129, + Opera130, ); define_ruby_enum!( @@ -255,6 +271,7 @@ pub fn include(ruby: &Ruby, gem_module: &RModule) -> Result<(), Error> { emulation_class.const_set("Edge145", EmulationDevice::Edge145)?; emulation_class.const_set("Edge146", EmulationDevice::Edge146)?; emulation_class.const_set("Edge147", EmulationDevice::Edge147)?; + emulation_class.const_set("Firefox109", EmulationDevice::Firefox109)?; emulation_class.const_set("Firefox117", EmulationDevice::Firefox117)?; emulation_class.const_set("Firefox128", EmulationDevice::Firefox128)?; @@ -273,6 +290,7 @@ pub fn include(ruby: &Ruby, gem_module: &RModule) -> Result<(), Error> { emulation_class.const_set("Firefox147", EmulationDevice::Firefox147)?; emulation_class.const_set("Firefox148", EmulationDevice::Firefox148)?; emulation_class.const_set("Firefox149", EmulationDevice::Firefox149)?; + emulation_class.const_set("SafariIos17_2", EmulationDevice::SafariIos17_2)?; emulation_class.const_set("SafariIos17_4_1", EmulationDevice::SafariIos17_4_1)?; emulation_class.const_set("SafariIos16_5", EmulationDevice::SafariIos16_5)?; @@ -300,6 +318,7 @@ pub fn include(ruby: &Ruby, gem_module: &RModule) -> Result<(), Error> { emulation_class.const_set("SafariIos26_2", EmulationDevice::SafariIos26_2)?; emulation_class.const_set("SafariIPad26", EmulationDevice::SafariIPad26)?; emulation_class.const_set("SafariIpad26_2", EmulationDevice::SafariIpad26_2)?; + emulation_class.const_set("OkHttp3_9", EmulationDevice::OkHttp3_9)?; emulation_class.const_set("OkHttp3_11", EmulationDevice::OkHttp3_11)?; emulation_class.const_set("OkHttp3_13", EmulationDevice::OkHttp3_13)?; @@ -308,10 +327,22 @@ pub fn include(ruby: &Ruby, gem_module: &RModule) -> Result<(), Error> { emulation_class.const_set("OkHttp4_10", EmulationDevice::OkHttp4_10)?; emulation_class.const_set("OkHttp4_12", EmulationDevice::OkHttp4_12)?; emulation_class.const_set("OkHttp5", EmulationDevice::OkHttp5)?; + emulation_class.const_set("Opera116", EmulationDevice::Opera116)?; emulation_class.const_set("Opera117", EmulationDevice::Opera117)?; emulation_class.const_set("Opera118", EmulationDevice::Opera118)?; emulation_class.const_set("Opera119", EmulationDevice::Opera119)?; + emulation_class.const_set("Opera120", EmulationDevice::Opera120)?; + emulation_class.const_set("Opera121", EmulationDevice::Opera121)?; + emulation_class.const_set("Opera122", EmulationDevice::Opera122)?; + emulation_class.const_set("Opera123", EmulationDevice::Opera123)?; + emulation_class.const_set("Opera124", EmulationDevice::Opera124)?; + emulation_class.const_set("Opera125", EmulationDevice::Opera125)?; + emulation_class.const_set("Opera126", EmulationDevice::Opera126)?; + emulation_class.const_set("Opera127", EmulationDevice::Opera127)?; + emulation_class.const_set("Opera128", EmulationDevice::Opera128)?; + emulation_class.const_set("Opera129", EmulationDevice::Opera129)?; + emulation_class.const_set("Opera130", EmulationDevice::Opera130)?; // EmulationOS enum binding let emulation_os_class = gem_module.define_class("EmulationOS", ruby.class_object())?;