async-http-faraday 0.15.0 → 0.17.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: a24c51b0aca4a4243f088331a3731da8792287fe94f30e1b2d6f398dd521a238
4
- data.tar.gz: '0687f09a3bc87ab6989b4cabc108aff16e21c606755c04fd77112afc40d4d124'
3
+ metadata.gz: 4c569036046b86acaf015c423fc888862d5354a33bcf6699c9d2ff9862a96a30
4
+ data.tar.gz: 585cebc0227475f76d7686c2291ed9fcf358423ac0b505a4d2b5fa34273a9288
5
5
  SHA512:
6
- metadata.gz: ed876ca460be8b0e402240081ab6dcc9318af3e1dce3e34787c40e3bee45fff6e472bb72f30babc666d8ad7660f688d066903f09a253dfc70081fcc2d76e95ca
7
- data.tar.gz: a1dc04a882e162e15c9161cddd48c298e027ed83fb2d5e09a0438f925277e7ad139e0f4577c13ca47f2f0164bde3a9e830cb1062a6eecbc84dbcbc52350cf785
6
+ metadata.gz: 3a032c25d0a49d7b02d32f93fa597ecc81562252efbf29f52ab70eafbc7b0e27ed68840118fb4b4c002ef6bc884365111ffcae3864dc8750cdf72789a5a18bae
7
+ data.tar.gz: 221d129c86685d6e3ed610b10403fda786f6782c8e6ae24cf7337afbf9e6c01461e2fc10e1e2964a95e49be45714bf2510560a5ca4abf3a029894a09702e5437
checksums.yaml.gz.sig CHANGED
Binary file
@@ -8,6 +8,7 @@
8
8
  # Copyright, 2023, by Genki Takiuchi.
9
9
  # Copyright, 2023, by Flavio Fernandes.
10
10
  # Copyright, 2024, by Jacob Frautschi.
11
+ # Copyright, 2024, by Korbin Hoffman.
11
12
 
12
13
  require 'faraday'
13
14
  require 'faraday/adapter'
@@ -75,7 +76,7 @@ module Async
75
76
  if clients = @connection_options.delete(:clients)
76
77
  @clients = clients.call(**@connection_options, &@config_block)
77
78
  else
78
- @clients = PersistentClients.new(**@connection_options, &@config_block)
79
+ @clients = PerThreadPersistentClients.new(**@connection_options, &@config_block)
79
80
  end
80
81
  end
81
82
 
@@ -119,9 +120,23 @@ module Async
119
120
  request = ::Protocol::HTTP::Request.new(endpoint.scheme, endpoint.authority, method, endpoint.path, nil, headers, body)
120
121
 
121
122
  with_timeout do
122
- response = client.call(request)
123
-
124
- save_response(env, response.status, encoded_body(response), response.headers)
123
+ if env.stream_response?
124
+ response = env.stream_response do |&on_data|
125
+ response = client.call(request)
126
+
127
+ response.each do |chunk|
128
+ on_data.call(chunk)
129
+ end
130
+
131
+ response
132
+ end
133
+
134
+ save_response(env, response.status, nil, response.headers)
135
+ else
136
+ response = client.call(request)
137
+
138
+ save_response(env, response.status, encoded_body(response), response.headers)
139
+ end
125
140
  end
126
141
  end
127
142
 
@@ -1,13 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2018-2024, by Samuel Williams.
5
- # Copyright, 2018, by Andreas Garnaes.
6
- # Copyright, 2019, by Denis Talakevich.
7
- # Copyright, 2019-2020, by Igor Sidorov.
8
- # Copyright, 2023, by Genki Takiuchi.
9
- # Copyright, 2023, by Flavio Fernandes.
10
- # Copyright, 2024, by Jacob Frautschi.
4
+ # Copyright, 2024, by Samuel Williams.
11
5
 
12
6
  require 'faraday'
13
7
  require 'faraday/adapter'
@@ -66,7 +60,7 @@ module Async
66
60
  # @parameter endpoint [IO::Endpoint::Generic] The endpoint to get the client for.
67
61
  # @yields {|client| ...} A client for the given endpoint.
68
62
  def with_proxied_client(proxy_endpoint, endpoint)
69
- client = client_for(proxy_endpoint)
63
+ client = make_client(proxy_endpoint)
70
64
  proxied_client = client.proxied_client(endpoint)
71
65
 
72
66
  yield proxied_client
@@ -95,6 +89,17 @@ module Async
95
89
  clients.each(&:close)
96
90
  end
97
91
 
92
+ # Lookup or create a client for the given endpoint.
93
+ #
94
+ # @parameter endpoint [IO::Endpoint::Generic] The endpoint to create the client for.
95
+ def make_client(endpoint)
96
+ key = host_key(endpoint)
97
+
98
+ fetch(key) do
99
+ super
100
+ end
101
+ end
102
+
98
103
  # Get a client for the given endpoint. If a client already exists for the host, it will be reused.
99
104
  #
100
105
  # @yields {|client| ...} A client for the given endpoint.
@@ -110,7 +115,7 @@ module Async
110
115
  key = [host_key(proxy_endpoint), host_key(endpoint)]
111
116
 
112
117
  proxied_client = fetch(key) do
113
- client_for(proxy_endpoint).proxied_client(endpoint)
118
+ make_client(proxy_endpoint).proxied_client(endpoint)
114
119
  end
115
120
 
116
121
  yield proxied_client
@@ -133,14 +138,6 @@ module Async
133
138
 
134
139
  return url
135
140
  end
136
-
137
- def client_for(endpoint)
138
- key = host_key(endpoint)
139
-
140
- fetch(key) do
141
- make_client
142
- end
143
- end
144
141
  end
145
142
 
146
143
  # An interface for creating and managing per-thread persistent HTTP clients.
@@ -6,7 +6,7 @@
6
6
  module Async
7
7
  module HTTP
8
8
  module Faraday
9
- VERSION = "0.15.0"
9
+ VERSION = "0.17.0"
10
10
  end
11
11
  end
12
12
  end
data/license.md CHANGED
@@ -9,6 +9,7 @@ Copyright, 2020, by Benoit Daloze.
9
9
  Copyright, 2023, by Genki Takiuchi.
10
10
  Copyright, 2023, by Flavio Fernandes.
11
11
  Copyright, 2024, by Jacob Frautschi.
12
+ Copyright, 2024, by Korbin Hoffman.
12
13
 
13
14
  Permission is hereby granted, free of charge, to any person obtaining a copy
14
15
  of this software and associated documentation files (the "Software"), to deal
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-http-faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -13,6 +13,7 @@ authors:
13
13
  - Denis Talakevich
14
14
  - Flavio Fernandes
15
15
  - Jacob Frautschi
16
+ - Korbin Hoffman
16
17
  autorequire:
17
18
  bindir: bin
18
19
  cert_chain:
@@ -45,7 +46,7 @@ cert_chain:
45
46
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
46
47
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
47
48
  -----END CERTIFICATE-----
48
- date: 2024-07-31 00:00:00.000000000 Z
49
+ date: 2024-08-13 00:00:00.000000000 Z
49
50
  dependencies:
50
51
  - !ruby/object:Gem::Dependency
51
52
  name: async-http
metadata.gz.sig CHANGED
Binary file