wreq 1.2.0-aarch64-linux → 1.2.1-aarch64-linux

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: 16fbb07d2e1aedb102715b19517f37849872ced39969480a86c04a793ab7ae1f
4
- data.tar.gz: 4f2730784e0dbebbf44dd64ecd82d4667f68946baaecda309ed4c02efb1ea1ac
3
+ metadata.gz: a4fe6a278e93c2752ad962e6463bb9815640b95f1c529bfa8dcc699cc198be2a
4
+ data.tar.gz: a4390325af71d1a5b0377cc7e8412ee83f7b630a16a34c7df6e3e256e6a7ab19
5
5
  SHA512:
6
- metadata.gz: 3af08ec562f5df7920dcef1dc738b606c2699fe390edf1a7ccb631c93ca2c1e7d66cce4cf498a4c0046675ba3f90b60d10b42c1d132098a3f6f616a9f6b13a17
7
- data.tar.gz: 85ba8d1e871967b88216e06eecf4aa4e8fe61f4321fc79f9f54b75aa7c9fb642d1e7cb70a664dbb6f1ee0ea6edbc0cff9727c8498e8dab37644aad2a21d375ec
6
+ metadata.gz: 6ccdfd91b1f58b450bdb5fed549e53be41ee98e0294304c402b2804271fa1abe9449beef9cdbf241dd1024d6ad5f48c3294d2b0f9b4dd494e85eb1945350dc0a
7
+ data.tar.gz: 9faca13e2e89958a6f185fb78a45643768842d291abeb02a16be46cc65872b94697452add56623db9a66b37134a3bfe3446cfa1dd5e46b5346a70313c516915e
data/lib/wreq.rb CHANGED
@@ -25,7 +25,7 @@ unless defined?(Wreq)
25
25
  # @param method [Wreq::Method] HTTP method to use
26
26
  # @param url [String] Target URL
27
27
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
28
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
28
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
29
29
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
30
30
  # @param query [Hash, nil] URL query parameters
31
31
  # @param auth [String, nil] Authorization header value
@@ -56,7 +56,7 @@ unless defined?(Wreq)
56
56
  #
57
57
  # @param url [String] Target URL
58
58
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
59
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
59
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
60
60
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
61
61
  # @param query [Hash, nil] URL query parameters
62
62
  # @param auth [String, nil] Authorization header value
@@ -87,7 +87,7 @@ unless defined?(Wreq)
87
87
  #
88
88
  # @param url [String] Target URL
89
89
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
90
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
90
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
91
91
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
92
92
  # @param query [Hash, nil] URL query parameters
93
93
  # @param auth [String, nil] Authorization header value
@@ -118,7 +118,7 @@ unless defined?(Wreq)
118
118
  #
119
119
  # @param url [String] Target URL
120
120
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
121
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
121
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
122
122
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
123
123
  # @param query [Hash, nil] URL query parameters
124
124
  # @param auth [String, nil] Authorization header value
@@ -149,7 +149,7 @@ unless defined?(Wreq)
149
149
  #
150
150
  # @param url [String] Target URL
151
151
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
152
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
152
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
153
153
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
154
154
  # @param query [Hash, nil] URL query parameters
155
155
  # @param auth [String, nil] Authorization header value
@@ -180,7 +180,7 @@ unless defined?(Wreq)
180
180
  #
181
181
  # @param url [String] Target URL
182
182
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
183
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
183
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
184
184
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
185
185
  # @param query [Hash, nil] URL query parameters
186
186
  # @param auth [String, nil] Authorization header value
@@ -211,7 +211,7 @@ unless defined?(Wreq)
211
211
  #
212
212
  # @param url [String] Target URL
213
213
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
214
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
214
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
215
215
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
216
216
  # @param query [Hash, nil] URL query parameters
217
217
  # @param auth [String, nil] Authorization header value
@@ -242,7 +242,7 @@ unless defined?(Wreq)
242
242
  #
243
243
  # @param url [String] Target URL
244
244
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
245
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
245
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
246
246
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
247
247
  # @param query [Hash, nil] URL query parameters
248
248
  # @param auth [String, nil] Authorization header value
@@ -273,7 +273,7 @@ unless defined?(Wreq)
273
273
  #
274
274
  # @param url [String] Target URL
275
275
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
276
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
276
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
277
277
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
278
278
  # @param query [Hash, nil] URL query parameters
279
279
  # @param auth [String, nil] Authorization header value
Binary file
Binary file
Binary file
@@ -38,6 +38,8 @@ unless defined?(Wreq)
38
38
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Default headers to include
39
39
  # in every request. Header names are case-insensitive. These headers
40
40
  # can be overridden on a per-request basis.
41
+ # @param orig_headers [Array<String>, nil] Original header names used to
42
+ # preserve raw header order and HTTP/1 case-sensitive header handling.
41
43
  #
42
44
  # @param referer [Boolean, nil] Whether to automatically send Referer
43
45
  # headers when following redirects. When true, the previous URL will
@@ -237,7 +239,7 @@ unless defined?(Wreq)
237
239
  # @param method [Wreq::Method] HTTP method to use
238
240
  # @param url [String] Target URL
239
241
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
240
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
242
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
241
243
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
242
244
  # @param query [Hash, nil] URL query parameters
243
245
  # @param auth [String, nil] Authorization header value
@@ -268,7 +270,7 @@ unless defined?(Wreq)
268
270
  #
269
271
  # @param url [String] Target URL
270
272
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
271
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
273
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
272
274
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
273
275
  # @param query [Hash, nil] URL query parameters
274
276
  # @param auth [String, nil] Authorization header value
@@ -299,7 +301,7 @@ unless defined?(Wreq)
299
301
  #
300
302
  # @param url [String] Target URL
301
303
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
302
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
304
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
303
305
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
304
306
  # @param query [Hash, nil] URL query parameters
305
307
  # @param auth [String, nil] Authorization header value
@@ -330,7 +332,7 @@ unless defined?(Wreq)
330
332
  #
331
333
  # @param url [String] Target URL
332
334
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
333
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
335
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
334
336
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
335
337
  # @param query [Hash, nil] URL query parameters
336
338
  # @param auth [String, nil] Authorization header value
@@ -361,7 +363,7 @@ unless defined?(Wreq)
361
363
  #
362
364
  # @param url [String] Target URL
363
365
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
364
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
366
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
365
367
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
366
368
  # @param query [Hash, nil] URL query parameters
367
369
  # @param auth [String, nil] Authorization header value
@@ -392,7 +394,7 @@ unless defined?(Wreq)
392
394
  #
393
395
  # @param url [String] Target URL
394
396
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
395
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
397
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
396
398
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
397
399
  # @param query [Hash, nil] URL query parameters
398
400
  # @param auth [String, nil] Authorization header value
@@ -423,7 +425,7 @@ unless defined?(Wreq)
423
425
  #
424
426
  # @param url [String] Target URL
425
427
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
426
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
428
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
427
429
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
428
430
  # @param query [Hash, nil] URL query parameters
429
431
  # @param auth [String, nil] Authorization header value
@@ -454,7 +456,7 @@ unless defined?(Wreq)
454
456
  #
455
457
  # @param url [String] Target URL
456
458
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
457
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
459
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
458
460
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
459
461
  # @param query [Hash, nil] URL query parameters
460
462
  # @param auth [String, nil] Authorization header value
@@ -485,7 +487,7 @@ unless defined?(Wreq)
485
487
  #
486
488
  # @param url [String] Target URL
487
489
  # @param headers [Wreq::Headers, Hash{String=>String}, nil] Custom headers for this request
488
- # @param orig_headers [Hash{String=>String}, nil] Original headers (raw, unmodified)
490
+ # @param orig_headers [Array<String>, nil] Original header names used to preserve raw header order and HTTP/1 case-sensitive header handling
489
491
  # @param default_headers [Hash{String=>String}, nil] Default headers to merge
490
492
  # @param query [Hash, nil] URL query parameters
491
493
  # @param auth [String, nil] Authorization header value
@@ -49,6 +49,20 @@ module Wreq
49
49
  def to_s
50
50
  end
51
51
  end
52
+
53
+ # Compares HTTP versions by semantic value, not object identity.
54
+ #
55
+ # This method is implemented by the native extension.
56
+ # When comparing with non-{Wreq::Version} objects, it returns false.
57
+ #
58
+ # @param other [Object] object to compare against
59
+ # @return [Boolean] true when both represent the same HTTP version
60
+ # @example
61
+ # Wreq::Version::HTTP_11 == response.version
62
+ unless method_defined?(:==)
63
+ def ==(other)
64
+ end
65
+ end
52
66
  end
53
67
 
54
68
  # HTTP status code wrapper.
@@ -0,0 +1,115 @@
1
+ require "test_helper"
2
+
3
+ class OrigHeaderTest < Minitest::Test
4
+ URL = "https://tls.browserleaks.com/http1"
5
+
6
+ CASES = [
7
+ {
8
+ name: "mixed_case_descending",
9
+ headers: {
10
+ "X-Zeta-Token" => "zeta",
11
+ "x-alpha-key" => "alpha",
12
+ "X-MiXeD-CaSe" => "mixed"
13
+ },
14
+ orig_headers: ["X-Zeta-Token", "x-alpha-key", "X-MiXeD-CaSe"]
15
+ },
16
+ {
17
+ name: "reverse_alpha_order",
18
+ headers: {
19
+ "X-Third" => "3",
20
+ "X-Second" => "2",
21
+ "X-First" => "1"
22
+ },
23
+ orig_headers: ["X-Third", "X-Second", "X-First"]
24
+ },
25
+ {
26
+ name: "preserve_weird_casing",
27
+ headers: {
28
+ "x-a" => "a",
29
+ "X-B" => "b",
30
+ "x-C" => "c"
31
+ },
32
+ orig_headers: ["x-C", "x-a", "X-B"]
33
+ },
34
+ {
35
+ name: "interleaved_tokens",
36
+ headers: {
37
+ "X-Token-3" => "v3",
38
+ "X-Token-1" => "v1",
39
+ "X-Token-2" => "v2"
40
+ },
41
+ orig_headers: ["X-Token-1", "X-Token-2", "X-Token-3"]
42
+ }
43
+ ].freeze
44
+
45
+ def test_client_default_orig_headers_preserves_header_order_in_multiple_shuffled_cases
46
+ CASES.each do |kase|
47
+ client = Wreq::Client.new(
48
+ headers: kase[:headers],
49
+ orig_headers: kase[:orig_headers]
50
+ )
51
+
52
+ response = client.get(URL, version: Wreq::Version::HTTP_11)
53
+ assert_equal 200, response.code, "case=#{kase[:name]}"
54
+
55
+ echoed_headers = extract_http1_headers(response.json, kase[:name])
56
+ assert_header_order(echoed_headers, kase[:orig_headers], kase[:name])
57
+ assert_header_values(echoed_headers, kase[:headers], kase[:name])
58
+ end
59
+ end
60
+
61
+ def test_module_request_orig_headers_preserves_header_order_in_multiple_shuffled_cases
62
+ CASES.each do |kase|
63
+ response = Wreq.get(
64
+ URL,
65
+ headers: kase[:headers],
66
+ orig_headers: kase[:orig_headers],
67
+ version: Wreq::Version::HTTP_11
68
+ )
69
+ assert_equal 200, response.code, "case=#{kase[:name]}"
70
+
71
+ echoed_headers = extract_http1_headers(response.json, kase[:name])
72
+ assert_header_order(echoed_headers, kase[:orig_headers], kase[:name])
73
+ assert_header_values(echoed_headers, kase[:headers], kase[:name])
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ def extract_http1_headers(json, case_name)
80
+ http1 = fetch_by_name(json, "http1")
81
+ refute_nil http1, "case=#{case_name}: expected JSON key 'http1', got #{json.keys.inspect}"
82
+
83
+ headers = fetch_by_name(http1, "headers")
84
+ refute_nil headers, "case=#{case_name}: expected JSON key 'http1.headers'"
85
+ headers
86
+ end
87
+
88
+ def fetch_by_name(hash_like, key_name)
89
+ return hash_like[key_name] if hash_like.respond_to?(:key?) && hash_like.key?(key_name)
90
+ return hash_like[key_name.to_sym] if hash_like.respond_to?(:key?) && hash_like.key?(key_name.to_sym)
91
+
92
+ pair = hash_like.find { |k, _| k.to_s == key_name }
93
+ pair&.last
94
+ end
95
+
96
+ def assert_header_order(echoed_headers, ordered_names, case_name)
97
+ echoed_keys = echoed_headers.keys
98
+ positions = ordered_names.map do |expected_name|
99
+ index = echoed_keys.index(expected_name)
100
+ refute_nil index, "case=#{case_name}: expected header to exist in echo: #{expected_name}"
101
+ index
102
+ end
103
+
104
+ assert_equal positions.sort, positions,
105
+ "case=#{case_name}: expected header order #{ordered_names.inspect}, got keys #{echoed_keys.inspect}"
106
+ end
107
+
108
+ def assert_header_values(echoed_headers, expected_headers, case_name)
109
+ expected_headers.each do |name, expected_value|
110
+ assert echoed_headers.key?(name),
111
+ "case=#{case_name}: expected exact-case header name #{name}, got #{echoed_headers.keys.inspect}"
112
+ assert_equal expected_value, echoed_headers[name]
113
+ end
114
+ end
115
+ end
data/test/request_test.rb CHANGED
@@ -6,6 +6,16 @@ class WreqHttpbinTest < Minitest::Test
6
6
  @client = Wreq::Client.new(timeout: 30)
7
7
  end
8
8
 
9
+ def test_spec_http1_version
10
+ response = Wreq.get("https://tls.browserleaks.com", version: Wreq::Version::HTTP_11)
11
+ assert_equal response.version, Wreq::Version::HTTP_11
12
+ end
13
+
14
+ def test_spec_http2_version
15
+ response = Wreq.get("https://tls.browserleaks.com", version: Wreq::Version::HTTP_2)
16
+ assert_equal response.version, Wreq::Version::HTTP_2
17
+ end
18
+
9
19
  def test_module_get_method
10
20
  response = Wreq.get("http://localhost:8080/get")
11
21
  assert_equal 200, response.code
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wreq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - SearchApi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-04 00:00:00.000000000 Z
11
+ date: 2026-06-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An easy and powerful Ruby HTTP client with advanced browser fingerprinting
14
14
  that accurately emulates Chrome, Edge, Firefox, Safari, Opera, and OkHttp with precise
@@ -54,6 +54,7 @@ files:
54
54
  - test/header_test.rb
55
55
  - test/inspect_test.rb
56
56
  - test/module_methods_test.rb
57
+ - test/orig_header_test.rb
57
58
  - test/request_parameters_test.rb
58
59
  - test/request_test.rb
59
60
  - test/response_test.rb