async-http 0.88.0 → 0.90.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 +1 -1
- data/lib/async/http/body/pipe.rb +0 -2
- data/lib/async/http/client.rb +2 -3
- data/lib/async/http/endpoint.rb +1 -1
- data/lib/async/http/protocol/http.rb +1 -1
- data/lib/async/http/protocol/http1/connection.rb +1 -1
- data/lib/async/http/protocol/http1/server.rb +3 -2
- data/lib/async/http/protocol/http1.rb +1 -1
- 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 +1 -1
- data/lib/async/http/protocol/http2/connection.rb +3 -2
- data/lib/async/http/protocol/http2/server.rb +1 -1
- data/lib/async/http/protocol/http2/stream.rb +1 -1
- data/lib/async/http/protocol/http2.rb +1 -1
- data/lib/async/http/protocol/https.rb +1 -1
- data/lib/async/http/server.rb +1 -1
- data/lib/async/http/version.rb +2 -2
- data/lib/metrics/provider/async/http/client.rb +26 -0
- data/lib/metrics/provider/async/http/server.rb +27 -0
- data/lib/metrics/provider/async/http.rb +4 -0
- data/license.md +1 -0
- data/readme.md +1 -1
- data.tar.gz.sig +1 -2
- metadata +10 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4deafcd4307a062ea1c30e318ad047ca05189a901b9a992dad49229bd1b29f24
|
4
|
+
data.tar.gz: 8525c40739af32f69dab67e3c813660057831b09ecfe2927e346dd4a6b585b2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8da92f52774dc4ada4701cea046fed2c948603f8327e68c5dbbbe0618eeb0b9a0d3fe3fe197c0ba3fbdaf95916375930a73f65e4121e7021ea0e95f236d7205
|
7
|
+
data.tar.gz: f01f486824e2345b637344235d710e727a422fa068d5a376497966052ec8b791edde1725e118489061e52b85ac2aa3b671f81bf5e5115925d8c3e16314540690
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/bake/async/http/h2spec.rb
CHANGED
data/lib/async/http/body/pipe.rb
CHANGED
data/lib/async/http/client.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2017-
|
4
|
+
# Copyright, 2017-2025, by Samuel Williams.
|
5
5
|
# Copyright, 2022, by Ian Ker-Seymer.
|
6
6
|
|
7
7
|
require "io/endpoint"
|
@@ -80,9 +80,8 @@ module Async
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def close
|
83
|
-
|
83
|
+
@pool.wait_until_free do
|
84
84
|
Console.warn(self) {"Waiting for #{@protocol} pool to drain: #{@pool}"}
|
85
|
-
@pool.wait
|
86
85
|
end
|
87
86
|
|
88
87
|
@pool.close
|
data/lib/async/http/endpoint.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2019-
|
4
|
+
# Copyright, 2019-2025, by Samuel Williams.
|
5
5
|
# Copyright, 2021-2022, by Adam Daniels.
|
6
6
|
# Copyright, 2024, by Thomas Morgan.
|
7
7
|
# Copyright, 2024, by Igor Sidorov.
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2018-
|
4
|
+
# Copyright, 2018-2025, by Samuel Williams.
|
5
5
|
# Copyright, 2020, by Igor Sidorov.
|
6
6
|
# Copyright, 2023, by Thomas Morgan.
|
7
7
|
# Copyright, 2024, by Anton Zhuravsky.
|
8
|
+
# Copyright, 2025, by Jean Boussier.
|
8
9
|
|
9
10
|
require_relative "connection"
|
10
11
|
require_relative "finishable"
|
@@ -52,7 +53,7 @@ module Async
|
|
52
53
|
end
|
53
54
|
|
54
55
|
return request
|
55
|
-
rescue ::Protocol::HTTP1::BadRequest
|
56
|
+
rescue ::Protocol::HTTP1::BadRequest
|
56
57
|
fail_request(400)
|
57
58
|
# Conceivably we could retry here, but we don't really know how bad the error is, so it's better to just fail:
|
58
59
|
raise
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2018-
|
4
|
+
# Copyright, 2018-2025, by Samuel Williams.
|
5
5
|
# Copyright, 2020, by Bruno Sutic.
|
6
|
+
# Copyright, 2025, by Jean Boussier.
|
6
7
|
|
7
8
|
require_relative "stream"
|
8
9
|
|
@@ -94,7 +95,7 @@ module Async
|
|
94
95
|
# Error is raised if a response is actively reading from the
|
95
96
|
# connection. The connection is silently closed if GOAWAY is
|
96
97
|
# received outside the request/response cycle.
|
97
|
-
rescue SocketError, IOError, EOFError, Errno::ECONNRESET, Errno::EPIPE
|
98
|
+
rescue SocketError, IOError, EOFError, Errno::ECONNRESET, Errno::EPIPE
|
98
99
|
# Ignore.
|
99
100
|
rescue => error
|
100
101
|
# Every other error.
|
data/lib/async/http/server.rb
CHANGED
data/lib/async/http/version.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2025, by Samuel Williams.
|
5
|
+
|
6
|
+
require_relative "../../../../async/http/client"
|
7
|
+
require "metrics/provider"
|
8
|
+
|
9
|
+
Metrics::Provider(Async::HTTP::Client) do
|
10
|
+
ASYNC_HTTP_CLIENT_REQUEST_INITIATED = Metrics.metric("async.http.client.request.initiated", :counter, description: "The number of HTTP client requests initiated.")
|
11
|
+
ASYNC_HTTP_CLIENT_REQUEST_COMPLETED = Metrics.metric("async.http.client.request.completed", :counter, description: "The number of HTTP client requests completed.")
|
12
|
+
|
13
|
+
def make_response(request, connection, attempt)
|
14
|
+
ASYNC_HTTP_CLIENT_REQUEST_INITIATED.emit(1, tags: ["method:#{request.method}"])
|
15
|
+
|
16
|
+
response = super(request, connection, attempt)
|
17
|
+
|
18
|
+
ASYNC_HTTP_CLIENT_REQUEST_COMPLETED.emit(1, tags: ["method:#{request.method}", "status:#{response.status}"])
|
19
|
+
|
20
|
+
return response
|
21
|
+
ensure
|
22
|
+
unless response
|
23
|
+
ASYNC_HTTP_CLIENT_REQUEST_COMPLETED.emit(1, tags: ["method:#{request.method}", "status:failed"])
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2025, by Samuel Williams.
|
5
|
+
|
6
|
+
require_relative "../../../../async/http/server"
|
7
|
+
require "metrics/provider"
|
8
|
+
|
9
|
+
Metrics::Provider(Async::HTTP::Server) do
|
10
|
+
ASYNC_HTTP_SERVER_REQUEST_INITIATED = Metrics.metric("async.http.server.request.initiated", :counter, description: "The number of HTTP server requests initiated.")
|
11
|
+
ASYNC_HTTP_SERVER_REQUEST_COMPLETED = Metrics.metric("async.http.server.request.completed", :counter, description: "The number of HTTP server requests completed.")
|
12
|
+
|
13
|
+
def call(request)
|
14
|
+
ASYNC_HTTP_SERVER_REQUEST_INITIATED.emit(1, tags: ["method:#{request.method}"])
|
15
|
+
|
16
|
+
if response = super(request)
|
17
|
+
ASYNC_HTTP_SERVER_REQUEST_COMPLETED.emit(1, tags: ["method:#{request.method}", "status:#{response.status}"])
|
18
|
+
return response
|
19
|
+
else
|
20
|
+
return nil
|
21
|
+
end
|
22
|
+
ensure
|
23
|
+
unless response
|
24
|
+
ASYNC_HTTP_SERVER_REQUEST_COMPLETED.emit(1, tags: ["method:#{request.method}", "status:failed"])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/license.md
CHANGED
@@ -22,6 +22,7 @@ Copyright, 2023, by dependabot[bot].
|
|
22
22
|
Copyright, 2023, by Josh Huber.
|
23
23
|
Copyright, 2024, by Anton Zhuravsky.
|
24
24
|
Copyright, 2024, by Hal Brodigan.
|
25
|
+
Copyright, 2025, by Jean Boussier.
|
25
26
|
|
26
27
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
27
28
|
of this software and associated documentation files (the "Software"), to deal
|
data/readme.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Async::HTTP
|
2
2
|
|
3
|
-
An asynchronous client and server implementation of HTTP/1.0, HTTP/1.1 and HTTP/2 including TLS. Support for streaming requests and responses. Built on top of [async](https://github.com/socketry/async) and [
|
3
|
+
An asynchronous client and server implementation of HTTP/1.0, HTTP/1.1 and HTTP/2 including TLS. Support for streaming requests and responses. Built on top of [async](https://github.com/socketry/async), [io-endpoint](https://github.com/socketry/io-endpoint) and [io-stream](https://github.com/socketry/io-stream). [falcon](https://github.com/socketry/falcon) provides a rack-compatible server.
|
4
4
|
|
5
5
|
[](https://github.com/socketry/async-http/actions?workflow=Test)
|
6
6
|
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
�vO:��+�1�|Pͼ�*iOR��@i��N"��@�-�iܪ˥�s�F6�WE��
|
1
|
+
?F��q�"K���M�j���/Z��O&u,
|
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.90.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -16,6 +16,7 @@ authors:
|
|
16
16
|
- Denis Talakevich
|
17
17
|
- Hal Brodigan
|
18
18
|
- Ian Ker-Seymer
|
19
|
+
- Jean Boussier
|
19
20
|
- Josh Huber
|
20
21
|
- Marco Concetto Rudilosso
|
21
22
|
- Olle Jonsson
|
@@ -57,7 +58,7 @@ cert_chain:
|
|
57
58
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
58
59
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
59
60
|
-----END CERTIFICATE-----
|
60
|
-
date:
|
61
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
61
62
|
dependencies:
|
62
63
|
- !ruby/object:Gem::Dependency
|
63
64
|
name: async
|
@@ -79,14 +80,14 @@ dependencies:
|
|
79
80
|
requirements:
|
80
81
|
- - "~>"
|
81
82
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0.
|
83
|
+
version: '0.11'
|
83
84
|
type: :runtime
|
84
85
|
prerelease: false
|
85
86
|
version_requirements: !ruby/object:Gem::Requirement
|
86
87
|
requirements:
|
87
88
|
- - "~>"
|
88
89
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0.
|
90
|
+
version: '0.11'
|
90
91
|
- !ruby/object:Gem::Dependency
|
91
92
|
name: io-endpoint
|
92
93
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,6 +235,9 @@ files:
|
|
234
235
|
- lib/async/http/server.rb
|
235
236
|
- lib/async/http/statistics.rb
|
236
237
|
- lib/async/http/version.rb
|
238
|
+
- lib/metrics/provider/async/http.rb
|
239
|
+
- lib/metrics/provider/async/http/client.rb
|
240
|
+
- lib/metrics/provider/async/http/server.rb
|
237
241
|
- license.md
|
238
242
|
- readme.md
|
239
243
|
- releases.md
|
@@ -250,14 +254,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
250
254
|
requirements:
|
251
255
|
- - ">="
|
252
256
|
- !ruby/object:Gem::Version
|
253
|
-
version: '3.
|
257
|
+
version: '3.2'
|
254
258
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
255
259
|
requirements:
|
256
260
|
- - ">="
|
257
261
|
- !ruby/object:Gem::Version
|
258
262
|
version: '0'
|
259
263
|
requirements: []
|
260
|
-
rubygems_version: 3.6.
|
264
|
+
rubygems_version: 3.6.9
|
261
265
|
specification_version: 4
|
262
266
|
summary: A HTTP client and server library.
|
263
267
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|