nxt_http_client 1.0.4 → 1.1.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 +4 -4
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +7 -7
- data/lib/nxt_http_client/batch_execution.rb +26 -0
- data/lib/nxt_http_client/client/batch_patch.rb +55 -0
- data/lib/nxt_http_client/fire_callbacks.rb +4 -0
- data/lib/nxt_http_client/version.rb +1 -1
- data/lib/nxt_http_client.rb +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6cccf6ffc8c507e36f58161ef7bd6b6412312015f5cf53d26f9ac2ea52244b8c
|
4
|
+
data.tar.gz: bc67df2f1885c7a49dabbdf4b49f823ec2f6bd1acba006295b847a1d181ed4aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ed4b1e266af12b23d2d7e4cbfd448a0ae5e9e9cf9fd48358f06b2d515e1d58e8db68fe29742f28908b30f9e93f51e9de9d181c30302c2b098647d23f3417631
|
7
|
+
data.tar.gz: f0f391aa5e8ea47fea76d197442b95799a9c6e9d17723dc958612d42dc499c872082b968a906a65f1367f07817ea304bb52d41addc0b1273e2bbb89460c041f4
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nxt_http_client (1.0
|
4
|
+
nxt_http_client (1.1.0)
|
5
5
|
activesupport (< 8.0)
|
6
6
|
nxt_registry
|
7
7
|
typhoeus
|
@@ -9,7 +9,7 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
activesupport (7.0.3)
|
12
|
+
activesupport (7.0.4.3)
|
13
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
14
|
i18n (>= 1.6, < 2)
|
15
15
|
minitest (>= 5.1)
|
@@ -17,18 +17,18 @@ GEM
|
|
17
17
|
addressable (2.8.0)
|
18
18
|
public_suffix (>= 2.0.2, < 5.0)
|
19
19
|
coderay (1.1.3)
|
20
|
-
concurrent-ruby (1.
|
20
|
+
concurrent-ruby (1.2.2)
|
21
21
|
crack (0.4.5)
|
22
22
|
rexml
|
23
23
|
diff-lcs (1.5.0)
|
24
|
-
ethon (0.
|
24
|
+
ethon (0.16.0)
|
25
25
|
ffi (>= 1.15.0)
|
26
26
|
ffi (1.15.5)
|
27
27
|
hashdiff (1.0.1)
|
28
|
-
i18n (1.
|
28
|
+
i18n (1.12.0)
|
29
29
|
concurrent-ruby (~> 1.0)
|
30
30
|
method_source (1.0.0)
|
31
|
-
minitest (5.
|
31
|
+
minitest (5.18.0)
|
32
32
|
nxt_registry (0.3.10)
|
33
33
|
activesupport
|
34
34
|
nxt_vcr_harness (0.1.4)
|
@@ -59,7 +59,7 @@ GEM
|
|
59
59
|
timecop (0.9.5)
|
60
60
|
typhoeus (1.4.0)
|
61
61
|
ethon (>= 0.9.0)
|
62
|
-
tzinfo (2.0.
|
62
|
+
tzinfo (2.0.6)
|
63
63
|
concurrent-ruby (~> 1.0)
|
64
64
|
vcr (6.1.0)
|
65
65
|
webmock (3.14.0)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module NxtHttpClient
|
2
|
+
def self.execute_in_batch(*client_instances, ignore_around_callbacks: false, raise_errors: true)
|
3
|
+
client_map = Hash.new do |hash, key|
|
4
|
+
hash[key] = { request: nil, error: nil, result: nil }
|
5
|
+
end
|
6
|
+
|
7
|
+
client_instances.each do |client|
|
8
|
+
client.singleton_class.include(NxtHttpClient::Client::BatchPatch)
|
9
|
+
client.assign_batch_data(client_map[client], ignore_around_callbacks)
|
10
|
+
end
|
11
|
+
|
12
|
+
hydra = Typhoeus::Hydra.new
|
13
|
+
|
14
|
+
client_instances.each do |client|
|
15
|
+
client.call.tap do |request|
|
16
|
+
hydra.queue(request)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
hydra.run
|
21
|
+
|
22
|
+
client_map.map do |client, response_data|
|
23
|
+
client.finish(response_data[:request], response_data[:result], response_data[:error], raise_errors: raise_errors)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module NxtHttpClient
|
2
|
+
class Client
|
3
|
+
module BatchPatch
|
4
|
+
attr_reader :callback_map, :ignore_around_callbacks
|
5
|
+
|
6
|
+
def assign_batch_data(callback_map, ignore_around_callbacks)
|
7
|
+
@callback_map = callback_map
|
8
|
+
@ignore_around_callbacks = ignore_around_callbacks
|
9
|
+
end
|
10
|
+
|
11
|
+
def fire(url = '', **opts, &block)
|
12
|
+
response_handler = build_response_handler(opts[:response_handler], &block)
|
13
|
+
request = build_request(url, **opts.except(:response_handler))
|
14
|
+
callback_map[:request] = request
|
15
|
+
|
16
|
+
setup_on_headers_callback(request, response_handler)
|
17
|
+
setup_on_body_callback(request, response_handler)
|
18
|
+
|
19
|
+
request.on_complete do |response|
|
20
|
+
callback_map[:result] = callback_or_response(response, response_handler)
|
21
|
+
rescue StandardError => e
|
22
|
+
callback_map[:error] = e
|
23
|
+
end
|
24
|
+
|
25
|
+
if callbacks.any_around_callbacks? && ignore_around_callbacks != true
|
26
|
+
raise(
|
27
|
+
ArgumentError,
|
28
|
+
<<~TXT
|
29
|
+
`around_fire` callbacks are not supported when firing batches. \
|
30
|
+
Pass `ignore_around_callbacks: true` to `execute_in_batch` \
|
31
|
+
in order to acknowledge and muffle this.
|
32
|
+
TXT
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
run_before_fire_callbacks(request, response_handler)
|
37
|
+
|
38
|
+
request
|
39
|
+
end
|
40
|
+
|
41
|
+
def finish(request, result, error, raise_errors: true)
|
42
|
+
result = run_after_fire_callbacks(request, request.response, result, error)
|
43
|
+
|
44
|
+
case [error, raise_errors]
|
45
|
+
in [nil, _]
|
46
|
+
result
|
47
|
+
in [_, true]
|
48
|
+
raise error
|
49
|
+
in [_, false]
|
50
|
+
error
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/nxt_http_client.rb
CHANGED
@@ -11,6 +11,8 @@ require 'nxt_http_client/logger'
|
|
11
11
|
require 'nxt_http_client/fire_callbacks'
|
12
12
|
require 'nxt_http_client/client_dsl'
|
13
13
|
require 'nxt_http_client/client'
|
14
|
+
require 'nxt_http_client/client/batch_patch'
|
15
|
+
require 'nxt_http_client/batch_execution'
|
14
16
|
require 'nxt_http_client/error'
|
15
17
|
|
16
18
|
module NxtHttpClient
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nxt_http_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Robecke
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2023-04-14 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: typhoeus
|
@@ -216,7 +216,9 @@ files:
|
|
216
216
|
- bin/console
|
217
217
|
- bin/setup
|
218
218
|
- lib/nxt_http_client.rb
|
219
|
+
- lib/nxt_http_client/batch_execution.rb
|
219
220
|
- lib/nxt_http_client/client.rb
|
221
|
+
- lib/nxt_http_client/client/batch_patch.rb
|
220
222
|
- lib/nxt_http_client/client_dsl.rb
|
221
223
|
- lib/nxt_http_client/config.rb
|
222
224
|
- lib/nxt_http_client/error.rb
|