modern_treasury 0.8.0 → 0.9.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: 25abe3b7c9d18cc9670f02a34f74f8a452008226e9c3b123c2f919f09569e70e
4
- data.tar.gz: f32a2a119a1c17def50b2e9fe8476316706f8b9a0d605106a3d0eda6b3395db5
3
+ metadata.gz: 0ece6a35181fd477de3a707e524d64731c9325fbd45cf05c2eed0a43bcff019a
4
+ data.tar.gz: e9ca8f0c2217f92995b84f021be24278d1eb2309a4a0563d885a74d5a11504cf
5
5
  SHA512:
6
- metadata.gz: ace377f41016c6ba3fcd9e1e251a1c88557922dc0f74893abd9b0ed2930c9068464f987896b69de77f2df2ddde49f9cff0612097d118c07cf5f7c6786d4a087e
7
- data.tar.gz: 6acd215b3218153e08c5d6858b13dca068df9f9cf0e7d96dd7f9d44fc64d9b68ae8360a2972ebb74b43bc9539757b0474692182eedc46e6404380bf7815a912f
6
+ metadata.gz: de56922ecdeb9e7de342cccb9d895300609c567ac76d75f0aff0c7f39118d45aa141641d70f0ebd34409a31fc01e8d499f2a9003e0e3821ef7b6f3c43c016b9e
7
+ data.tar.gz: d7e272c5915c13195b0d0e5a2ce604e82af5a436c087377b1e88ed8d9e5c5f78eab70d6e5fb51738c09cbd6d96316d7ffa049c3e07ec7e750c9d8924a1667a1e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.0 (2025-10-23)
4
+
5
+ Full Changelog: [v0.8.0...v0.9.0](https://github.com/Modern-Treasury/modern-treasury-ruby/compare/v0.8.0...v0.9.0)
6
+
7
+ ### Features
8
+
9
+ * handle thread interrupts in the core HTTP client ([6ba4bc5](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/6ba4bc5503f416fc1acf57db52b250b66d07a26c))
10
+
3
11
  ## 0.8.0 (2025-10-22)
4
12
 
5
13
  Full Changelog: [v0.7.0...v0.8.0](https://github.com/Modern-Treasury/modern-treasury-ruby/compare/v0.7.0...v0.8.0)
data/README.md CHANGED
@@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
15
15
  <!-- x-release-please-start-version -->
16
16
 
17
17
  ```ruby
18
- gem "modern_treasury", "~> 0.8.0"
18
+ gem "modern_treasury", "~> 0.9.0"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -128,40 +128,48 @@ module ModernTreasury
128
128
  url, deadline = request.fetch_values(:url, :deadline)
129
129
 
130
130
  req = nil
131
- eof = false
132
131
  finished = false
133
- closing = nil
134
132
 
135
133
  # rubocop:disable Metrics/BlockLength
136
134
  enum = Enumerator.new do |y|
137
135
  next if finished
138
136
 
139
137
  with_pool(url, deadline: deadline) do |conn|
140
- req, closing = self.class.build_request(request) do
141
- self.class.calibrate_socket_timeout(conn, deadline)
142
- end
143
-
144
- self.class.calibrate_socket_timeout(conn, deadline)
145
- unless conn.started?
146
- conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
147
- conn.start
148
- end
138
+ eof = false
139
+ closing = nil
140
+ ::Thread.handle_interrupt(Object => :never) do
141
+ ::Thread.handle_interrupt(Object => :immediate) do
142
+ req, closing = self.class.build_request(request) do
143
+ self.class.calibrate_socket_timeout(conn, deadline)
144
+ end
149
145
 
150
- self.class.calibrate_socket_timeout(conn, deadline)
151
- conn.request(req) do |rsp|
152
- y << [req, rsp]
153
- break if finished
154
-
155
- rsp.read_body do |bytes|
156
- y << bytes.force_encoding(Encoding::BINARY)
157
- break if finished
146
+ self.class.calibrate_socket_timeout(conn, deadline)
147
+ unless conn.started?
148
+ conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
149
+ conn.start
150
+ end
158
151
 
159
152
  self.class.calibrate_socket_timeout(conn, deadline)
153
+ conn.request(req) do |rsp|
154
+ y << [req, rsp]
155
+ break if finished
156
+
157
+ rsp.read_body do |bytes|
158
+ y << bytes.force_encoding(Encoding::BINARY)
159
+ break if finished
160
+
161
+ self.class.calibrate_socket_timeout(conn, deadline)
162
+ end
163
+ eof = true
164
+ end
165
+ end
166
+ ensure
167
+ begin
168
+ conn.finish if !eof && conn&.started?
169
+ ensure
170
+ closing&.call
160
171
  end
161
- eof = true
162
172
  end
163
- ensure
164
- conn.finish if !eof && conn&.started?
165
173
  end
166
174
  rescue Timeout::Error
167
175
  raise ModernTreasury::Errors::APITimeoutError.new(url: url, request: req)
@@ -174,8 +182,6 @@ module ModernTreasury
174
182
  body = ModernTreasury::Internal::Util.fused_enum(enum, external: true) do
175
183
  finished = true
176
184
  loop { enum.next }
177
- ensure
178
- closing&.call
179
185
  end
180
186
  [Integer(response.code), response, body]
181
187
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ModernTreasury
4
- VERSION = "0.8.0"
4
+ VERSION = "0.9.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modern_treasury
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Modern Treasury
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-10-23 00:00:00.000000000 Z
11
+ date: 2025-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool