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 +4 -4
- data/Cargo.lock +3 -3
- data/README.md +6 -6
- data/ext/wreq_rb/Cargo.toml +2 -2
- data/ext/wreq_rb/src/client.rs +16 -7
- data/lib/wreq-rb/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a050d3455249d7a8d80fbe042f13360caee9e205e466a6955df3720ad8567a5e
|
|
4
|
+
data.tar.gz: 8742ec45bcfc490b1ef03918e71b45fe1f51bdadd4c2c536c0b16fd3a52fd903
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
2529
|
+
version = "3.0.0-rc.10"
|
|
2530
2530
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2531
|
-
checksum = "
|
|
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.
|
|
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
|
|
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` .. `
|
|
148
|
-
| Firefox | `firefox_109
|
|
149
|
-
| Safari | `
|
|
150
|
-
| Edge | `edge_101` .. `
|
|
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? |
|
data/ext/wreq_rb/Cargo.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "wreq_rb"
|
|
3
|
-
version = "0.3.
|
|
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.
|
|
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"
|
data/ext/wreq_rb/src/client.rs
CHANGED
|
@@ -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::
|
|
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 '
|
|
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:
|
|
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(
|
|
517
|
-
let value = HeaderValue::from_str(&
|
|
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
|
-
|
|
530
|
-
s
|
|
539
|
+
k.funcall("to_s", ())?
|
|
531
540
|
} else {
|
|
532
541
|
TryConvert::try_convert(k)?
|
|
533
542
|
};
|
data/lib/wreq-rb/version.rb
CHANGED
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.
|
|
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
|
|
12
|
+
date: 2026-03-02 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rb_sys
|