webmock 3.19.1 → 3.20.0

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: 379567500380d6df66bea0edab72f977ddbcab8fc2cc79f9c2e4c535c46cfeb4
4
- data.tar.gz: fbab14a1e3a2d7a5563f293e735f521dc47481e7d574f4ace0e5cefa9a15fb8e
3
+ metadata.gz: ffda5916fee8f80d1d0a725b7de314652a588658189bb28ad7a984551d406a3a
4
+ data.tar.gz: f2aa5c1f78094f72f9c7310dfbb3e866be2acc6910bd3c3a1a4e562744e0fa65
5
5
  SHA512:
6
- metadata.gz: 768bc4817766c1b5d2c799c8453bf59411d69f36c4d3b6dfc0630f2a830efa4b72b78dd999cce146bf8f4754a05fbd0dbbddcc72a7389f8b48b8546d4d98dba0
7
- data.tar.gz: ca14f9cffef86ef82b52985f5ad58f662cbffcb33b86050ffd6e9390efaf5892eed0469595f153d7b0d8a8e6141a75a1e47cdd8076178385a92fe99593c8b3c3
6
+ metadata.gz: e3fbfb98e4a6d090abd630ccfea78f5b06038e3f6d4683bd1f651f6c8b07b31698f71f9588df1a8d90066ab0d38a088a604204b4f710bfd9249235a9f2664453
7
+ data.tar.gz: ffcaf10bc3cd523f6c12c2209fc4e48fb34813e520789ca78ee0cb65b3285f7bf1534ef36faafbd61a49d82ca547f2ecfb3ea74b33b5ba3b4294493f0683942d
data/CHANGELOG.md CHANGED
@@ -1,11 +1,35 @@
1
1
  # Changelog
2
2
 
3
- # 3.19.0
3
+ # 3.20.0
4
+
5
+ * Optimised EmHttpRequestAdapter performance.
6
+
7
+ Thanks to [Ricardo Trindade](https://github.com/RicardoTrindade)
8
+
9
+ * Removed runtime dependency on base64.
10
+
11
+ Thanks to [Earlopain](https://github.com/Earlopain)
12
+
13
+ * Typhoeus::Response objects constructed from stubbed responses now have all timing attributes set to 0.0.
14
+
15
+ Thanks to [James Brown](https://github.com/Roguelazer)
16
+
17
+ * Optimised WebMock::Util::Headers by removing redundant freeze invocations.
18
+
19
+ Thanks to [Kazuhiro NISHIYAMA](https://github.com/znz)
20
+
21
+ * The default stubbed response body, which is an empty String, is unfrozen.
22
+
23
+ * When building signatures of requests made by http.rb, the request body encoding is now preserved.
24
+
25
+ # 3.19.1
4
26
 
5
27
  * When passing a Proc or lambda as response body to `to_return_json`, the body is evaluated at the time of request and not at the time of `to_return_json` method invocation.
6
28
 
7
29
  Thanks to [Jason Karns](https://github.com/jasonkarns) for reporting.
8
30
 
31
+ # 3.19.0
32
+
9
33
  * Do not alter real (non-stubbed) request headers when handling em-http-request requests.
10
34
 
11
35
  Thanks to [Yoann Lecuyer](https://github.com/ylecuyer)
data/README.md CHANGED
@@ -1189,6 +1189,10 @@ People who submitted patches and new features or suggested improvements. Many th
1189
1189
  * Yuki Inoue
1190
1190
  * Brandon Weaver
1191
1191
  * Josh Nichols
1192
+ * Ricardo Trindade
1193
+ * Earlopain
1194
+ * James Brown
1195
+ * Kazuhiro NISHIYAMA
1192
1196
 
1193
1197
  For a full list of contributors you can visit the
1194
1198
  [contributors](https://github.com/bblimke/webmock/contributors) page.
@@ -156,7 +156,7 @@ if defined?(EventMachine::HttpClient)
156
156
  raw_cookie = response_header.cookie
157
157
  raw_cookie = [raw_cookie] if raw_cookie.is_a? String
158
158
 
159
- cookie = raw_cookie.select { |c| c.start_with? name }.first
159
+ cookie = raw_cookie.detect { |c| c.start_with? name }
160
160
  cookie and cookie.split('=', 2)[1]
161
161
  end
162
162
 
@@ -3,11 +3,21 @@
3
3
  module HTTP
4
4
  class Request
5
5
  def webmock_signature
6
- request_body = if defined?(HTTP::Request::Body)
7
- String.new.tap { |string| body.each { |part| string << part } }
8
- else
9
- body
10
- end
6
+ request_body = nil
7
+
8
+ if defined?(HTTP::Request::Body)
9
+ request_body = String.new
10
+ first_chunk_encoding = nil
11
+ body.each do |part|
12
+ request_body << part
13
+ first_chunk_encoding ||= part.encoding
14
+ end
15
+
16
+ request_body.force_encoding(first_chunk_encoding) if first_chunk_encoding
17
+ request_body
18
+ else
19
+ request_body = body
20
+ end
11
21
 
12
22
  ::WebMock::RequestSignature.new(verb, uri.to_s, {
13
23
  headers: headers.to_h,
@@ -96,7 +96,14 @@ if defined?(Typhoeus)
96
96
  status_message: "",
97
97
  body: "",
98
98
  headers: {},
99
- return_code: :operation_timedout
99
+ return_code: :operation_timedout,
100
+ total_time: 0.0,
101
+ starttransfer_time: 0.0,
102
+ appconnect_time: 0.0,
103
+ pretransfer_time: 0.0,
104
+ connect_time: 0.0,
105
+ namelookup_time: 0.0,
106
+ redirect_time: 0.0
100
107
  )
101
108
  else
102
109
  ::Typhoeus::Response.new(
@@ -104,7 +111,14 @@ if defined?(Typhoeus)
104
111
  status_message: webmock_response.status[1],
105
112
  body: webmock_response.body,
106
113
  headers: webmock_response.headers,
107
- effective_url: request_signature.uri
114
+ effective_url: request_signature.uri,
115
+ total_time: 0.0,
116
+ starttransfer_time: 0.0,
117
+ appconnect_time: 0.0,
118
+ pretransfer_time: 0.0,
119
+ connect_time: 0.0,
120
+ namelookup_time: 0.0,
121
+ redirect_time: 0.0
108
122
  )
109
123
  end
110
124
  response.mock = :webmock
@@ -38,7 +38,7 @@ module WebMock
38
38
  end
39
39
 
40
40
  def body
41
- @body || ''
41
+ @body || String.new("")
42
42
  end
43
43
 
44
44
  def body=(body)
@@ -1,16 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'base64'
4
-
5
3
  module WebMock
6
4
 
7
5
  module Util
8
6
 
9
7
  class Headers
10
8
 
11
- STANDARD_HEADER_DELIMITER = '-'.freeze
12
- NONSTANDARD_HEADER_DELIMITER = '_'.freeze
13
- JOIN = ', '.freeze
9
+ STANDARD_HEADER_DELIMITER = '-'
10
+ NONSTANDARD_HEADER_DELIMITER = '_'
11
+ JOIN = ', '
14
12
 
15
13
  def self.normalize_headers(headers)
16
14
  return nil unless headers
@@ -59,7 +57,8 @@ module WebMock
59
57
  end
60
58
 
61
59
  def self.basic_auth_header(*credentials)
62
- "Basic #{Base64.strict_encode64(credentials.join(':')).chomp}"
60
+ strict_base64_encoded = [credentials.join(':')].pack("m0")
61
+ "Basic #{strict_base64_encoded.chomp}"
63
62
  end
64
63
 
65
64
  def self.normalize_name(name)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WebMock
4
- VERSION = '3.19.1' unless defined?(::WebMock::VERSION)
4
+ VERSION = '3.20.0' unless defined?(::WebMock::VERSION)
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webmock
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.19.1
4
+ version: 3.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bartosz Blimke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-29 00:00:00.000000000 Z
11
+ date: 2024-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -198,6 +198,20 @@ dependencies:
198
198
  - - ">="
199
199
  - !ruby/object:Gem::Version
200
200
  version: 2.2.4
201
+ - !ruby/object:Gem::Dependency
202
+ name: mutex_m
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
201
215
  - !ruby/object:Gem::Dependency
202
216
  name: excon
203
217
  requirement: !ruby/object:Gem::Requirement
@@ -357,9 +371,9 @@ licenses:
357
371
  - MIT
358
372
  metadata:
359
373
  bug_tracker_uri: https://github.com/bblimke/webmock/issues
360
- changelog_uri: https://github.com/bblimke/webmock/blob/v3.19.1/CHANGELOG.md
361
- documentation_uri: https://www.rubydoc.info/gems/webmock/3.19.1
362
- source_code_uri: https://github.com/bblimke/webmock/tree/v3.19.1
374
+ changelog_uri: https://github.com/bblimke/webmock/blob/v3.20.0/CHANGELOG.md
375
+ documentation_uri: https://www.rubydoc.info/gems/webmock/3.20.0
376
+ source_code_uri: https://github.com/bblimke/webmock/tree/v3.20.0
363
377
  wiki_uri: https://github.com/bblimke/webmock/wiki
364
378
  post_install_message:
365
379
  rdoc_options: []
@@ -376,7 +390,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
376
390
  - !ruby/object:Gem::Version
377
391
  version: '0'
378
392
  requirements: []
379
- rubygems_version: 3.4.19
393
+ rubygems_version: 3.5.3
380
394
  signing_key:
381
395
  specification_version: 4
382
396
  summary: Library for stubbing HTTP requests in Ruby.