async-http 0.76.0 → 0.78.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
- checksums.yaml.gz.sig +0 -0
- data/bake/async/http/h2spec.rb +6 -6
- data/bake/async/http.rb +3 -3
- data/lib/async/http/body/hijack.rb +4 -4
- data/lib/async/http/body/pipe.rb +1 -1
- data/lib/async/http/body/writable.rb +3 -3
- data/lib/async/http/body.rb +3 -3
- data/lib/async/http/client.rb +15 -18
- data/lib/async/http/endpoint.rb +10 -10
- data/lib/async/http/internet/instance.rb +1 -1
- data/lib/async/http/internet.rb +5 -5
- data/lib/async/http/middleware/location_redirector.rb +8 -8
- data/lib/async/http/mock/endpoint.rb +2 -2
- data/lib/async/http/mock.rb +1 -1
- data/lib/async/http/protocol/http.rb +2 -2
- data/lib/async/http/protocol/http1/client.rb +19 -6
- data/lib/async/http/protocol/http1/connection.rb +6 -7
- data/lib/async/http/protocol/http1/finishable.rb +58 -0
- data/lib/async/http/protocol/http1/request.rb +3 -3
- data/lib/async/http/protocol/http1/response.rb +10 -2
- data/lib/async/http/protocol/http1/server.rb +38 -15
- data/lib/async/http/protocol/http1.rb +3 -3
- data/lib/async/http/protocol/http10.rb +1 -1
- data/lib/async/http/protocol/http11.rb +1 -1
- data/lib/async/http/protocol/http2/client.rb +4 -4
- data/lib/async/http/protocol/http2/connection.rb +12 -12
- data/lib/async/http/protocol/http2/input.rb +2 -2
- data/lib/async/http/protocol/http2/output.rb +2 -2
- data/lib/async/http/protocol/http2/request.rb +4 -4
- data/lib/async/http/protocol/http2/response.rb +14 -4
- data/lib/async/http/protocol/http2/server.rb +3 -3
- data/lib/async/http/protocol/http2/stream.rb +12 -4
- data/lib/async/http/protocol/http2.rb +3 -3
- data/lib/async/http/protocol/https.rb +3 -3
- data/lib/async/http/protocol/request.rb +7 -3
- data/lib/async/http/protocol/response.rb +7 -3
- data/lib/async/http/protocol.rb +3 -3
- data/lib/async/http/proxy.rb +4 -3
- data/lib/async/http/reference.rb +2 -2
- data/lib/async/http/relative_location.rb +1 -1
- data/lib/async/http/server.rb +13 -13
- data/lib/async/http/statistics.rb +4 -4
- data/lib/async/http/version.rb +1 -1
- data/lib/async/http.rb +5 -5
- data/readme.md +11 -0
- data/releases.md +11 -0
- data.tar.gz.sig +0 -0
- metadata +7 -6
- metadata.gz.sig +0 -0
@@ -4,10 +4,10 @@
|
|
4
4
|
# Copyright, 2017-2024, by Samuel Williams.
|
5
5
|
# Copyright, 2024, by Thomas Morgan.
|
6
6
|
|
7
|
-
require_relative
|
8
|
-
require_relative
|
7
|
+
require_relative "http1/client"
|
8
|
+
require_relative "http1/server"
|
9
9
|
|
10
|
-
require
|
10
|
+
require "io/stream"
|
11
11
|
|
12
12
|
module Async
|
13
13
|
module HTTP
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2018-
|
4
|
+
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "connection"
|
7
|
+
require_relative "response"
|
8
8
|
|
9
|
-
require
|
9
|
+
require "protocol/http2/client"
|
10
10
|
|
11
11
|
module Async
|
12
12
|
module HTTP
|
@@ -4,25 +4,25 @@
|
|
4
4
|
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
# Copyright, 2020, by Bruno Sutic.
|
6
6
|
|
7
|
-
require_relative
|
7
|
+
require_relative "stream"
|
8
8
|
|
9
|
-
require
|
9
|
+
require "async/semaphore"
|
10
10
|
|
11
11
|
module Async
|
12
12
|
module HTTP
|
13
13
|
module Protocol
|
14
14
|
module HTTP2
|
15
|
-
HTTPS =
|
16
|
-
SCHEME =
|
17
|
-
METHOD =
|
18
|
-
PATH =
|
19
|
-
AUTHORITY =
|
20
|
-
STATUS =
|
21
|
-
PROTOCOL =
|
15
|
+
HTTPS = "https".freeze
|
16
|
+
SCHEME = ":scheme".freeze
|
17
|
+
METHOD = ":method".freeze
|
18
|
+
PATH = ":path".freeze
|
19
|
+
AUTHORITY = ":authority".freeze
|
20
|
+
STATUS = ":status".freeze
|
21
|
+
PROTOCOL = ":protocol".freeze
|
22
22
|
|
23
|
-
CONTENT_LENGTH =
|
24
|
-
CONNECTION =
|
25
|
-
TRAILER =
|
23
|
+
CONTENT_LENGTH = "content-length".freeze
|
24
|
+
CONNECTION = "connection".freeze
|
25
|
+
TRAILER = "trailer".freeze
|
26
26
|
|
27
27
|
module Connection
|
28
28
|
def initialize(*)
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2020-
|
4
|
+
# Copyright, 2020-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
6
|
+
require "protocol/http/body/writable"
|
7
7
|
|
8
8
|
module Async
|
9
9
|
module HTTP
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2020-
|
4
|
+
# Copyright, 2020-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
6
|
+
require "protocol/http/body/stream"
|
7
7
|
|
8
8
|
module Async
|
9
9
|
module HTTP
|
@@ -3,8 +3,8 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "../request"
|
7
|
+
require_relative "stream"
|
8
8
|
|
9
9
|
module Async
|
10
10
|
module HTTP
|
@@ -53,7 +53,7 @@ module Async
|
|
53
53
|
@length = Integer(value)
|
54
54
|
elsif key == CONNECTION
|
55
55
|
raise ::Protocol::HTTP2::HeaderError, "Connection header is not allowed!"
|
56
|
-
elsif key.start_with?
|
56
|
+
elsif key.start_with? ":"
|
57
57
|
raise ::Protocol::HTTP2::HeaderError, "Invalid pseudo-header #{key}!"
|
58
58
|
elsif key =~ /[A-Z]/
|
59
59
|
raise ::Protocol::HTTP2::HeaderError, "Invalid characters in header #{key}!"
|
@@ -107,7 +107,7 @@ module Async
|
|
107
107
|
end
|
108
108
|
|
109
109
|
NO_RESPONSE = [
|
110
|
-
[STATUS,
|
110
|
+
[STATUS, "500"],
|
111
111
|
]
|
112
112
|
|
113
113
|
def send_response(response)
|
@@ -3,8 +3,8 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "../response"
|
7
|
+
require_relative "stream"
|
8
8
|
|
9
9
|
module Async
|
10
10
|
module HTTP
|
@@ -41,7 +41,7 @@ module Async
|
|
41
41
|
# While in theory, the response pseudo-headers may be extended in the future, currently they only response pseudo-header is :status, so we can assume it is always the first header.
|
42
42
|
status_header = headers.shift
|
43
43
|
|
44
|
-
if status_header.first !=
|
44
|
+
if status_header.first != ":status"
|
45
45
|
raise ProtocolError, "Invalid response headers: #{headers.inspect}"
|
46
46
|
end
|
47
47
|
|
@@ -137,6 +137,16 @@ module Async
|
|
137
137
|
attr :stream
|
138
138
|
attr :request
|
139
139
|
|
140
|
+
def pool=(pool)
|
141
|
+
# If we are already closed, the stream can be released now:
|
142
|
+
if @stream.closed?
|
143
|
+
pool.release(@stream.connection)
|
144
|
+
else
|
145
|
+
# Otherwise, we will release the stream when it is closed:
|
146
|
+
@stream.pool = pool
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
140
150
|
def connection
|
141
151
|
@stream.connection
|
142
152
|
end
|
@@ -175,7 +185,7 @@ module Async
|
|
175
185
|
raise ::Protocol::HTTP2::HeaderError, "Request path already specified!" if request.path
|
176
186
|
|
177
187
|
request.path = value
|
178
|
-
elsif key.start_with?
|
188
|
+
elsif key.start_with? ":"
|
179
189
|
raise ::Protocol::HTTP2::HeaderError, "Invalid pseudo-header #{key}!"
|
180
190
|
else
|
181
191
|
request.headers[key] = value
|
@@ -3,10 +3,10 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "connection"
|
7
|
+
require_relative "request"
|
8
8
|
|
9
|
-
require
|
9
|
+
require "protocol/http2/server"
|
10
10
|
|
11
11
|
module Async
|
12
12
|
module HTTP
|
@@ -5,10 +5,10 @@
|
|
5
5
|
# Copyright, 2022, by Marco Concetto Rudilosso.
|
6
6
|
# Copyright, 2023, by Thomas Morgan.
|
7
7
|
|
8
|
-
require
|
8
|
+
require "protocol/http2/stream"
|
9
9
|
|
10
|
-
require_relative
|
11
|
-
require_relative
|
10
|
+
require_relative "input"
|
11
|
+
require_relative "output"
|
12
12
|
|
13
13
|
module Async
|
14
14
|
module HTTP
|
@@ -20,6 +20,8 @@ module Async
|
|
20
20
|
|
21
21
|
@headers = nil
|
22
22
|
|
23
|
+
@pool = nil
|
24
|
+
|
23
25
|
# Input buffer, reading request body, or response body (receive_data):
|
24
26
|
@length = nil
|
25
27
|
@input = nil
|
@@ -30,12 +32,14 @@ module Async
|
|
30
32
|
|
31
33
|
attr_accessor :headers
|
32
34
|
|
35
|
+
attr_accessor :pool
|
36
|
+
|
33
37
|
attr :input
|
34
38
|
|
35
39
|
def add_header(key, value)
|
36
40
|
if key == CONNECTION
|
37
41
|
raise ::Protocol::HTTP2::HeaderError, "Connection header is not allowed!"
|
38
|
-
elsif key.start_with?
|
42
|
+
elsif key.start_with? ":"
|
39
43
|
raise ::Protocol::HTTP2::HeaderError, "Invalid pseudo-header #{key}!"
|
40
44
|
elsif key =~ /[A-Z]/
|
41
45
|
raise ::Protocol::HTTP2::HeaderError, "Invalid upper-case characters in header #{key}!"
|
@@ -158,6 +162,10 @@ module Async
|
|
158
162
|
@output = nil
|
159
163
|
end
|
160
164
|
|
165
|
+
if pool = @pool and @connection
|
166
|
+
pool.release(@connection)
|
167
|
+
end
|
168
|
+
|
161
169
|
return self
|
162
170
|
end
|
163
171
|
end
|
@@ -4,10 +4,10 @@
|
|
4
4
|
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
# Copyright, 2024, by Thomas Morgan.
|
6
6
|
|
7
|
-
require_relative
|
8
|
-
require_relative
|
7
|
+
require_relative "http2/client"
|
8
|
+
require_relative "http2/server"
|
9
9
|
|
10
|
-
require
|
10
|
+
require "io/stream"
|
11
11
|
|
12
12
|
module Async
|
13
13
|
module HTTP
|
@@ -4,10 +4,10 @@
|
|
4
4
|
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
# Copyright, 2019, by Brian Morearty.
|
6
6
|
|
7
|
-
require_relative
|
8
|
-
require_relative
|
7
|
+
require_relative "http10"
|
8
|
+
require_relative "http11"
|
9
9
|
|
10
|
-
require_relative
|
10
|
+
require_relative "http2"
|
11
11
|
|
12
12
|
module Async
|
13
13
|
module HTTP
|
@@ -3,10 +3,10 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2017-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
6
|
+
require "protocol/http/request"
|
7
|
+
require "protocol/http/headers"
|
8
8
|
|
9
|
-
require_relative
|
9
|
+
require_relative "../body/writable"
|
10
10
|
|
11
11
|
module Async
|
12
12
|
module HTTP
|
@@ -41,6 +41,10 @@ module Async
|
|
41
41
|
def remote_address= value
|
42
42
|
@remote_address = value
|
43
43
|
end
|
44
|
+
|
45
|
+
def inspect
|
46
|
+
"#<#{self.class}:0x#{self.object_id.to_s(16)} method=#{method} path=#{path} version=#{version}>"
|
47
|
+
end
|
44
48
|
end
|
45
49
|
end
|
46
50
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2017-
|
4
|
+
# Copyright, 2017-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
6
|
+
require "protocol/http/response"
|
7
7
|
|
8
|
-
require_relative
|
8
|
+
require_relative "../body/writable"
|
9
9
|
|
10
10
|
module Async
|
11
11
|
module HTTP
|
@@ -33,6 +33,10 @@ module Async
|
|
33
33
|
def remote_address= value
|
34
34
|
@remote_address = value
|
35
35
|
end
|
36
|
+
|
37
|
+
def inspect
|
38
|
+
"#<#{self.class}:0x#{self.object_id.to_s(16)} status=#{status}>"
|
39
|
+
end
|
36
40
|
end
|
37
41
|
end
|
38
42
|
end
|
data/lib/async/http/protocol.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2017-
|
4
|
+
# Copyright, 2017-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "protocol/http1"
|
7
|
+
require_relative "protocol/https"
|
8
8
|
|
9
9
|
module Async
|
10
10
|
module HTTP
|
data/lib/async/http/proxy.rb
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2019-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "client"
|
7
|
+
require_relative "endpoint"
|
8
8
|
|
9
|
-
require_relative
|
9
|
+
require_relative "body/pipe"
|
10
10
|
|
11
11
|
module Async
|
12
12
|
module HTTP
|
@@ -96,6 +96,7 @@ module Async
|
|
96
96
|
end
|
97
97
|
else
|
98
98
|
# This ensures we don't leave a response dangling:
|
99
|
+
input.close
|
99
100
|
response.close
|
100
101
|
|
101
102
|
raise ConnectFailure, response
|
data/lib/async/http/reference.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2018-
|
4
|
+
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
6
|
+
require "protocol/http/reference"
|
7
7
|
|
8
8
|
module Async
|
9
9
|
module HTTP
|
@@ -4,7 +4,7 @@
|
|
4
4
|
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
# Copyright, 2019-2020, by Brian Morearty.
|
6
6
|
|
7
|
-
require_relative
|
7
|
+
require_relative "middleware/location_redirector"
|
8
8
|
|
9
9
|
warn "`Async::HTTP::RelativeLocation` is deprecated and will be removed in the next release. Please use `Async::HTTP::Middleware::LocationRedirector` instead.", uplevel: 1
|
10
10
|
|
data/lib/async/http/server.rb
CHANGED
@@ -4,12 +4,12 @@
|
|
4
4
|
# Copyright, 2017-2024, by Samuel Williams.
|
5
5
|
# Copyright, 2019, by Brian Morearty.
|
6
6
|
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
7
|
+
require "async"
|
8
|
+
require "io/endpoint"
|
9
|
+
require "protocol/http/middleware"
|
10
|
+
require "traces/provider"
|
11
11
|
|
12
|
-
require_relative
|
12
|
+
require_relative "protocol"
|
13
13
|
|
14
14
|
module Async
|
15
15
|
module HTTP
|
@@ -76,8 +76,8 @@ module Async
|
|
76
76
|
|
77
77
|
Traces::Provider(self) do
|
78
78
|
def call(request)
|
79
|
-
if trace_parent = request.headers[
|
80
|
-
Traces.trace_context = Traces::Context.parse(trace_parent.join, request.headers[
|
79
|
+
if trace_parent = request.headers["traceparent"]
|
80
|
+
Traces.trace_context = Traces::Context.parse(trace_parent.join, request.headers["tracestate"], remote: true)
|
81
81
|
end
|
82
82
|
|
83
83
|
attributes = {
|
@@ -86,25 +86,25 @@ module Async
|
|
86
86
|
'http.authority': request.authority,
|
87
87
|
'http.scheme': request.scheme,
|
88
88
|
'http.path': request.path,
|
89
|
-
'http.user_agent': request.headers[
|
89
|
+
'http.user_agent': request.headers["user-agent"],
|
90
90
|
}
|
91
91
|
|
92
92
|
if length = request.body&.length
|
93
|
-
attributes[
|
93
|
+
attributes["http.request.length"] = length
|
94
94
|
end
|
95
95
|
|
96
96
|
if protocol = request.protocol
|
97
|
-
attributes[
|
97
|
+
attributes["http.protocol"] = protocol
|
98
98
|
end
|
99
99
|
|
100
|
-
Traces.trace(
|
100
|
+
Traces.trace("async.http.server.call", resource: "#{request.method} #{request.path}", attributes: attributes) do |span|
|
101
101
|
super.tap do |response|
|
102
102
|
if status = response&.status
|
103
|
-
span[
|
103
|
+
span["http.status_code"] = status
|
104
104
|
end
|
105
105
|
|
106
106
|
if length = response&.body&.length
|
107
|
-
span[
|
107
|
+
span["http.response.length"] = length
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2018-
|
4
|
+
# Copyright, 2018-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
6
|
+
require "protocol/http/body/wrapper"
|
7
7
|
|
8
|
-
require
|
8
|
+
require "async/clock"
|
9
9
|
|
10
10
|
module Async
|
11
11
|
module HTTP
|
@@ -89,7 +89,7 @@ module Async
|
|
89
89
|
parts << "took #{format_duration(duration)} until first chunk"
|
90
90
|
end
|
91
91
|
|
92
|
-
return parts.join(
|
92
|
+
return parts.join("; ")
|
93
93
|
end
|
94
94
|
|
95
95
|
def inspect
|
data/lib/async/http/version.rb
CHANGED
data/lib/async/http.rb
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2017-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
6
|
+
require_relative "http/version"
|
7
7
|
|
8
|
-
require_relative
|
9
|
-
require_relative
|
8
|
+
require_relative "http/client"
|
9
|
+
require_relative "http/server"
|
10
10
|
|
11
|
-
require_relative
|
11
|
+
require_relative "http/internet"
|
12
12
|
|
13
|
-
require_relative
|
13
|
+
require_relative "http/endpoint"
|
data/readme.md
CHANGED
@@ -16,6 +16,17 @@ Please see the [project documentation](https://socketry.github.io/async-http/) f
|
|
16
16
|
|
17
17
|
Please see the [project releases](https://socketry.github.io/async-http/releases/index) for all releases.
|
18
18
|
|
19
|
+
### v0.77.0
|
20
|
+
|
21
|
+
- Improved HTTP/1 connection handling.
|
22
|
+
- The input stream is no longer closed when the output stream is closed.
|
23
|
+
|
24
|
+
### v0.76.0
|
25
|
+
|
26
|
+
- `Async::HTTP::Body::Writable` is moved to `Protocol::HTTP::Body::Writable`.
|
27
|
+
- Remove `Async::HTTP::Body::Delayed` with no replacement.
|
28
|
+
- Remove `Async::HTTP::Body::Slowloris` with no replacement.
|
29
|
+
|
19
30
|
### v0.75.0
|
20
31
|
|
21
32
|
- Better handling of HTTP/1 \<-\> HTTP/2 proxying, specifically upgrade/CONNECT requests.
|
data/releases.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Releases
|
2
2
|
|
3
|
+
## v0.77.0
|
4
|
+
|
5
|
+
- Improved HTTP/1 connection handling.
|
6
|
+
- The input stream is no longer closed when the output stream is closed.
|
7
|
+
|
8
|
+
## v0.76.0
|
9
|
+
|
10
|
+
- `Async::HTTP::Body::Writable` is moved to `Protocol::HTTP::Body::Writable`.
|
11
|
+
- Remove `Async::HTTP::Body::Delayed` with no replacement.
|
12
|
+
- Remove `Async::HTTP::Body::Slowloris` with no replacement.
|
13
|
+
|
3
14
|
## v0.75.0
|
4
15
|
|
5
16
|
- Better handling of HTTP/1 \<-\> HTTP/2 proxying, specifically upgrade/CONNECT requests.
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.78.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -58,7 +58,7 @@ cert_chain:
|
|
58
58
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
59
59
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
60
60
|
-----END CERTIFICATE-----
|
61
|
-
date: 2024-09-
|
61
|
+
date: 2024-09-22 00:00:00.000000000 Z
|
62
62
|
dependencies:
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: async
|
@@ -122,28 +122,28 @@ dependencies:
|
|
122
122
|
requirements:
|
123
123
|
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: '0.
|
125
|
+
version: '0.37'
|
126
126
|
type: :runtime
|
127
127
|
prerelease: false
|
128
128
|
version_requirements: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
130
|
- - "~>"
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: '0.
|
132
|
+
version: '0.37'
|
133
133
|
- !ruby/object:Gem::Dependency
|
134
134
|
name: protocol-http1
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
137
|
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: '0.
|
139
|
+
version: '0.25'
|
140
140
|
type: :runtime
|
141
141
|
prerelease: false
|
142
142
|
version_requirements: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: '0.
|
146
|
+
version: '0.25'
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: protocol-http2
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- lib/async/http/protocol/http1.rb
|
198
198
|
- lib/async/http/protocol/http1/client.rb
|
199
199
|
- lib/async/http/protocol/http1/connection.rb
|
200
|
+
- lib/async/http/protocol/http1/finishable.rb
|
200
201
|
- lib/async/http/protocol/http1/request.rb
|
201
202
|
- lib/async/http/protocol/http1/response.rb
|
202
203
|
- lib/async/http/protocol/http1/server.rb
|
metadata.gz.sig
CHANGED
Binary file
|