wreq-rb 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1bab83beb01f9947b8c60c5ea07111ed9ae92c70c7f938a4c5e8760fc95d85c
4
- data.tar.gz: 282a9d6a85ad4d94c1ae6960559e1c7fe1e13f80b1552a0aa6f81de8d9b7228b
3
+ metadata.gz: a050d3455249d7a8d80fbe042f13360caee9e205e466a6955df3720ad8567a5e
4
+ data.tar.gz: 8742ec45bcfc490b1ef03918e71b45fe1f51bdadd4c2c536c0b16fd3a52fd903
5
5
  SHA512:
6
- metadata.gz: 8c2bd054e8949784072c27a11fac5061d13845beb01f18eb5795f5978c4258845acbbdd7762b4e1fe5922f03beba04c7a51262c4b90b6783003c2450888070f8
7
- data.tar.gz: 49d6dd66916500623dfbc1a0e41b1a581a7ab40e90aa21fa7476d60f59252c9182767883e100b710a54aec8bb05f6b2da7a65c35a7a080f87486f2acab2ab29d
6
+ metadata.gz: 93eaf342768b5236d68b4637ead4e39d562b421438644f05ff1074499cbbdb7490dcf7f2012a436b599acd20d85e446e2d74abaf4397d8ff2f67870c067ab23e
7
+ data.tar.gz: d6c6209500402f16ac285fff0482c975f7e5c39c51c92adaf4755b56b25cfd33095d9745f571c87a59b8b02fec2a7a5fdc278034d1e7691deb8962cf8ac1b2de
data/Cargo.lock CHANGED
@@ -2526,9 +2526,9 @@ dependencies = [
2526
2526
 
2527
2527
  [[package]]
2528
2528
  name = "wreq-util"
2529
- version = "3.0.0-rc.9"
2529
+ version = "3.0.0-rc.10"
2530
2530
  source = "registry+https://github.com/rust-lang/crates.io-index"
2531
- checksum = "2430952360874ecff465a5541de6c214a12fc232540a9a35192a7be2115e28a0"
2531
+ checksum = "6c6bbe24d28beb9ceb58b514bd6a613c759d3b706f768b9d2950d5d35b543c04"
2532
2532
  dependencies = [
2533
2533
  "serde",
2534
2534
  "typed-builder",
@@ -2537,7 +2537,7 @@ dependencies = [
2537
2537
 
2538
2538
  [[package]]
2539
2539
  name = "wreq_rb"
2540
- version = "0.3.1"
2540
+ version = "0.3.2"
2541
2541
  dependencies = [
2542
2542
  "bytes",
2543
2543
  "http",
data/README.md CHANGED
@@ -119,10 +119,9 @@ Pass an options hash as the second argument to any HTTP method:
119
119
 
120
120
  ## Browser Emulation
121
121
 
122
- wreq-rb emulates real browser TLS fingerprints, HTTP/2 settings, and headers by default. **Chrome 143 is used when no emulation is specified.**
122
+ wreq-rb emulates real browser TLS fingerprints, HTTP/2 settings, and headers by default. **The lastest supported Chrome is used when no emulation is specified.**
123
123
 
124
124
  ```ruby
125
- # Default: Chrome 143 emulation (automatic)
126
125
  resp = Wreq.get("https://tls.peet.ws/api/all")
127
126
 
128
127
  # Explicit browser emulation
@@ -144,10 +143,10 @@ resp = client.get("https://example.com", emulation: "safari_26_2")
144
143
 
145
144
  | Browser | Example values |
146
145
  |---------|---------------|
147
- | Chrome | `chrome_100` .. `chrome_143` |
148
- | Firefox | `firefox_109`, `firefox_146`, `firefox_private_135` |
149
- | Safari | `safari_15_3` .. `safari_26_2`, `safari_ios_26`, `safari_ipad_18` |
150
- | Edge | `edge_101` .. `edge_142` |
146
+ | Chrome | `chrome_100` .. `chrome_145` |
147
+ | Firefox | `firefox_109` .. `firefox_147`, `firefox_private_135` |
148
+ | Safari | `safari_15.3` .. `safari_26.2`, `safari_ios_26`, `safari_ipad_18` |
149
+ | Edge | `edge_101` .. `edge_145` |
151
150
  | Opera | `opera_116` .. `opera_119` |
152
151
  | OkHttp | `okhttp_3_9` .. `okhttp_5` |
153
152
 
@@ -165,6 +164,7 @@ The `Wreq::Response` object provides:
165
164
  | `url` | String | Final URL (after redirects) |
166
165
  | `version` | String | HTTP version |
167
166
  | `content_length` | Integer/nil | Content length if known |
167
+ | `transfer_size` | Integer/nil | Bytes transferred over the wire |
168
168
  | `success?` | Boolean | Status 2xx? |
169
169
  | `redirect?` | Boolean | Status 3xx? |
170
170
  | `client_error?` | Boolean | Status 4xx? |
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "wreq_rb"
3
- version = "0.3.1"
3
+ version = "0.3.2"
4
4
  edition = "2021"
5
5
  publish = false
6
6
 
@@ -24,7 +24,7 @@ wreq = { path = "../../vendor/wreq", features = [
24
24
  "query",
25
25
  "form",
26
26
  ] }
27
- wreq-util = { version = "=3.0.0-rc.9", features = ["emulation", "emulation-serde"] }
27
+ wreq-util = { version = "=3.0.0-rc.10", features = ["emulation", "emulation-serde"] }
28
28
  tokio = { version = "1", features = ["full"] }
29
29
  tokio-util = "0.7"
30
30
  serde_json = "1.0"
@@ -140,13 +140,13 @@ async fn execute_request(req: wreq::RequestBuilder) -> Result<ResponseData, wreq
140
140
  // --------------------------------------------------------------------------
141
141
 
142
142
  /// The default emulation to apply when none is specified.
143
- const DEFAULT_EMULATION: BrowserEmulation = BrowserEmulation::Chrome143;
143
+ const DEFAULT_EMULATION: BrowserEmulation = BrowserEmulation::Chrome145;
144
144
 
145
145
  /// Parse a Ruby string like "chrome_143" into a BrowserEmulation variant.
146
146
  fn parse_emulation(name: &str) -> Result<BrowserEmulation, magnus::Error> {
147
147
  let json_val = serde_json::Value::String(name.to_string());
148
148
  serde_json::from_value::<BrowserEmulation>(json_val)
149
- .map_err(|_| generic_error(format!("unknown emulation: '{}'. Use names like 'chrome_143', 'firefox_146', 'safari_18_5', etc.", name)))
149
+ .map_err(|_| generic_error(format!("unknown emulation: '{}'. Use names like 'chrome_145', 'firefox_147', 'safari_18.5', etc.", name)))
150
150
  }
151
151
 
152
152
  // --------------------------------------------------------------------------
@@ -511,10 +511,20 @@ fn hash_get_hash(hash: &RHash, key: &str) -> Result<Option<RHash>, magnus::Error
511
511
 
512
512
  fn hash_to_header_map(hash: &RHash) -> Result<HeaderMap, magnus::Error> {
513
513
  let mut hmap = HeaderMap::new();
514
- hash.foreach(|k: String, v: String| {
514
+ hash.foreach(|k: Value, v: Value| {
515
+ if v.is_nil() {
516
+ return Ok(magnus::r_hash::ForEach::Continue);
517
+ }
518
+ let ruby = unsafe { Ruby::get_unchecked() };
519
+ let ks: String = if k.is_kind_of(ruby.class_symbol()) {
520
+ k.funcall("to_s", ())?
521
+ } else {
522
+ TryConvert::try_convert(k)?
523
+ };
524
+ let vs: String = v.funcall("to_s", ())?;
515
525
  let name =
516
- HeaderName::from_bytes(k.as_bytes()).map_err(|e| generic_error(e))?;
517
- let value = HeaderValue::from_str(&v).map_err(|e| generic_error(e))?;
526
+ HeaderName::from_bytes(ks.as_bytes()).map_err(|e| generic_error(e))?;
527
+ let value = HeaderValue::from_str(&vs).map_err(|e| generic_error(e))?;
518
528
  hmap.insert(name, value);
519
529
  Ok(magnus::r_hash::ForEach::Continue)
520
530
  })?;
@@ -526,8 +536,7 @@ fn hash_to_pairs(hash: &RHash) -> Result<Vec<(String, String)>, magnus::Error> {
526
536
  hash.foreach(|k: Value, v: Value| {
527
537
  let ruby = unsafe { Ruby::get_unchecked() };
528
538
  let ks: String = if k.is_kind_of(ruby.class_symbol()) {
529
- let s: String = k.funcall("to_s", ())?;
530
- s
539
+ k.funcall("to_s", ())?
531
540
  } else {
532
541
  TryConvert::try_convert(k)?
533
542
  };
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wreq
4
- VERSION = "0.3.1"
4
+ VERSION = "0.3.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wreq-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yicheng Zhou
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-02-27 00:00:00.000000000 Z
12
+ date: 2026-03-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rb_sys