async-http 0.35.0 → 0.35.1
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/async-http.gemspec +1 -1
- data/lib/async/http/body/streamable.rb +2 -2
- data/lib/async/http/body/writable.rb +7 -1
- data/lib/async/http/protocol/http2/connection.rb +2 -0
- data/lib/async/http/protocol/http2/request.rb +7 -4
- data/lib/async/http/protocol/http2/response.rb +6 -2
- data/lib/async/http/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38d3e8fe6b2bedcd8dfc48956ba07e2f70f9be363e419887baaad5c9dab3fab5
|
4
|
+
data.tar.gz: c924a3f88353066264b12d485a50ef894bd8c00f574a86d9fc7884519e00e366
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c930d3851d96957c9fc905c0b00ca0e0bb4e9ffc011f66f7e38763cc6293292e2442e7d67205c8c67934dbab82828b54735a3dce3855af3be9dd221828f5684
|
7
|
+
data.tar.gz: b6c3e1521e69ff048ba0dd5e8b89951d360eea7881f3df7488b66f48aad1b6e35562b9d91e7f1ecffb64cf130868b639596dcc52b05404d5fbf3e2a0f6e10534
|
data/async-http.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.add_dependency("async", "~> 1.6")
|
20
20
|
spec.add_dependency("async-io", "~> 1.16")
|
21
21
|
|
22
|
-
spec.add_dependency("http-protocol", "~> 0.
|
22
|
+
spec.add_dependency("http-protocol", "~> 0.7.0")
|
23
23
|
|
24
24
|
# spec.add_dependency("openssl")
|
25
25
|
|
@@ -26,8 +26,8 @@ module Async
|
|
26
26
|
# Invokes a callback once the body has finished reading.
|
27
27
|
class Streamable < Wrapper
|
28
28
|
def self.wrap(message, &block)
|
29
|
-
if message and message.body
|
30
|
-
if remaining =
|
29
|
+
if message and body = message.body
|
30
|
+
if remaining = body.length
|
31
31
|
remaining = Integer(remaining)
|
32
32
|
end
|
33
33
|
|
@@ -30,9 +30,11 @@ module Async
|
|
30
30
|
class Closed < StandardError
|
31
31
|
end
|
32
32
|
|
33
|
-
def initialize
|
33
|
+
def initialize(length = nil)
|
34
34
|
@queue = Async::Queue.new
|
35
35
|
|
36
|
+
@length = length
|
37
|
+
|
36
38
|
@count = 0
|
37
39
|
|
38
40
|
@finished = false
|
@@ -41,6 +43,10 @@ module Async
|
|
41
43
|
@error = nil
|
42
44
|
end
|
43
45
|
|
46
|
+
def length
|
47
|
+
@length
|
48
|
+
end
|
49
|
+
|
44
50
|
# Stop generating output; cause the next call to write to fail with the given error.
|
45
51
|
def close(error = nil)
|
46
52
|
unless @closed
|
@@ -86,15 +86,18 @@ module Async
|
|
86
86
|
if response.nil?
|
87
87
|
@stream.send_headers(nil, NO_RESPONSE, ::HTTP::Protocol::HTTP2::END_STREAM)
|
88
88
|
elsif response.body?
|
89
|
-
|
89
|
+
pseudo_headers = [
|
90
90
|
[STATUS, response.status],
|
91
|
-
]
|
91
|
+
]
|
92
92
|
|
93
93
|
if length = response.body.length
|
94
|
-
|
94
|
+
pseudo_headers << [CONTENT_LENGTH, length]
|
95
95
|
end
|
96
96
|
|
97
|
-
headers
|
97
|
+
headers = Headers::Merged.new(
|
98
|
+
pseudo_headers,
|
99
|
+
response.headers
|
100
|
+
)
|
98
101
|
|
99
102
|
@stream.send_headers(nil, headers)
|
100
103
|
@stream.send_body(response.body)
|
@@ -27,6 +27,7 @@ module Async
|
|
27
27
|
class Response < Protocol::Response
|
28
28
|
def initialize(protocol, stream_id)
|
29
29
|
@input = nil
|
30
|
+
@length = nil
|
30
31
|
|
31
32
|
super(protocol.version, nil, nil, Headers.new, nil)
|
32
33
|
|
@@ -52,16 +53,18 @@ module Async
|
|
52
53
|
def receive_headers(stream, headers, end_stream)
|
53
54
|
headers.each do |key, value|
|
54
55
|
if key == STATUS
|
55
|
-
@status = value
|
56
|
+
@status = Integer(value)
|
56
57
|
elsif key == REASON
|
57
58
|
@reason = value
|
59
|
+
elsif key == CONTENT_LENGTH
|
60
|
+
@length = Integer(value)
|
58
61
|
else
|
59
62
|
@headers[key] = value
|
60
63
|
end
|
61
64
|
end
|
62
65
|
|
63
66
|
unless end_stream
|
64
|
-
@body = @input = Body::Writable.new
|
67
|
+
@body = @input = Body::Writable.new(@length)
|
65
68
|
end
|
66
69
|
|
67
70
|
# We are ready for processing:
|
@@ -91,6 +94,7 @@ module Async
|
|
91
94
|
@notification.signal
|
92
95
|
end
|
93
96
|
|
97
|
+
# Send a request and read it into this response.
|
94
98
|
def send_request(request)
|
95
99
|
# https://http2.github.io/http2-spec/#rfc.section.8.1.2.3
|
96
100
|
# All HTTP/2 requests MUST include exactly one valid value for the :method, :scheme, and :path pseudo-header fields, unless it is a CONNECT request (Section 8.3). An HTTP request that omits mandatory pseudo-header fields is malformed (Section 8.1.2.6).
|
data/lib/async/http/version.rb
CHANGED
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.35.
|
4
|
+
version: 0.35.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.7.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.7.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: async-rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|