protocol-rack 0.11.0 → 0.11.2
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/lib/protocol/rack/adapter/generic.rb +15 -2
- data/lib/protocol/rack/adapter/rack2.rb +7 -5
- data/lib/protocol/rack/adapter/rack3.rb +7 -5
- data/lib/protocol/rack/adapter/rack31.rb +12 -5
- data/lib/protocol/rack/version.rb +1 -1
- data/license.md +2 -1
- data/readme.md +10 -0
- data/releases.md +5 -0
- data.tar.gz.sig +0 -0
- metadata +5 -8
- 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: ab3e913313df25d3592761df42df6f1926fd901b3363ad7347db464599d1964e
|
4
|
+
data.tar.gz: a4610f7973026ecce482e3c97ee1622466a5f65f969f4b6378108fd6c98a4f33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a08d73c2dd4e1621693404a3b74c504981b42cd81a6e1bbaae0f44b1ab1bf7b47515f509d1a700afa4bdaa31edcb9b238007e24e7b5c398ea12cddf01430f79
|
7
|
+
data.tar.gz: 6e948ed04abe9047f51623ffd7a93846050088328696e75fefc2c3f358b5cf4f5333a410963af2f2a8a9e17948baecdd07d7c3c6ea2245557c39f60d35bb3ce5
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -34,9 +34,17 @@ module Protocol
|
|
34
34
|
Console
|
35
35
|
end
|
36
36
|
|
37
|
-
# Unwrap
|
37
|
+
# Unwrap HTTP headers into the CGI-style expected by Rack middleware, and add them to the rack `env`.
|
38
38
|
#
|
39
|
-
#
|
39
|
+
# e.g. `accept-encoding` becomes `HTTP_ACCEPT_ENCODING`.
|
40
|
+
#
|
41
|
+
# Headers keys with underscores will generate the same CGI-style header key as headers with dashes.
|
42
|
+
#
|
43
|
+
# e.g `accept_encoding` becomes `HTTP_ACCEPT_ENCODING` too.
|
44
|
+
#
|
45
|
+
# You should not implicitly trust the `HTTP_` headers for security purposes, as they are generated by the client.
|
46
|
+
#
|
47
|
+
# Multiple headers are combined with a comma, with one exception: `HTTP_COOKIE` headers are combined with a semicolon.
|
40
48
|
#
|
41
49
|
# @parameter headers [Protocol::HTTP::Headers] The raw HTTP request headers.
|
42
50
|
# @parameter env [Hash] The rack request `env`.
|
@@ -66,6 +74,11 @@ module Protocol
|
|
66
74
|
# @parameter request [Protocol::HTTP::Request] The incoming request.
|
67
75
|
# @parameter env [Hash] The rack `env`.
|
68
76
|
def unwrap_request(request, env)
|
77
|
+
# The request protocol, either from the upgrade header or the HTTP/2 pseudo header of the same name.
|
78
|
+
if protocol = request.protocol
|
79
|
+
env[RACK_PROTOCOL] = protocol
|
80
|
+
end
|
81
|
+
|
69
82
|
if content_type = request.headers.delete("content-type")
|
70
83
|
env[CGI::CONTENT_TYPE] = content_type
|
71
84
|
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2022-
|
4
|
+
# Copyright, 2022-2025, by Samuel Williams.
|
5
|
+
# Copyright, 2025, by Francisco Mejia.
|
5
6
|
|
6
7
|
require "console"
|
7
8
|
|
@@ -37,9 +38,6 @@ module Protocol
|
|
37
38
|
RACK_ERRORS => $stderr,
|
38
39
|
RACK_LOGGER => self.logger,
|
39
40
|
|
40
|
-
# The request protocol, either from the upgrade header or the HTTP/2 pseudo header of the same name.
|
41
|
-
RACK_PROTOCOL => request.protocol,
|
42
|
-
|
43
41
|
# The HTTP request method, such as “GET” or “POST”. This cannot ever be an empty string, and so is always required.
|
44
42
|
CGI::REQUEST_METHOD => request.method,
|
45
43
|
|
@@ -62,8 +60,12 @@ module Protocol
|
|
62
60
|
|
63
61
|
# I'm not sure what sane defaults should be here:
|
64
62
|
CGI::SERVER_NAME => server_name,
|
65
|
-
CGI::SERVER_PORT => server_port,
|
66
63
|
}
|
64
|
+
|
65
|
+
# SERVER_PORT is optional but must not be set if it is not present.
|
66
|
+
if server_port
|
67
|
+
env[CGI::SERVER_PORT] = server_port
|
68
|
+
end
|
67
69
|
|
68
70
|
self.unwrap_request(request, env)
|
69
71
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2022-
|
4
|
+
# Copyright, 2022-2025, by Samuel Williams.
|
5
|
+
# Copyright, 2025, by Francisco Mejia.
|
5
6
|
|
6
7
|
require "console"
|
7
8
|
|
@@ -30,9 +31,6 @@ module Protocol
|
|
30
31
|
RACK_ERRORS => $stderr,
|
31
32
|
RACK_LOGGER => self.logger,
|
32
33
|
|
33
|
-
# The request protocol, either from the upgrade header or the HTTP/2 pseudo header of the same name.
|
34
|
-
RACK_PROTOCOL => request.protocol,
|
35
|
-
|
36
34
|
# The response finished callbacks:
|
37
35
|
RACK_RESPONSE_FINISHED => [],
|
38
36
|
|
@@ -58,8 +56,12 @@ module Protocol
|
|
58
56
|
|
59
57
|
# I'm not sure what sane defaults should be here:
|
60
58
|
CGI::SERVER_NAME => server_name,
|
61
|
-
CGI::SERVER_PORT => server_port,
|
62
59
|
}
|
60
|
+
|
61
|
+
# SERVER_PORT is optional but must not be set if it is not present.
|
62
|
+
if server_port
|
63
|
+
env[CGI::SERVER_PORT] = server_port
|
64
|
+
end
|
63
65
|
|
64
66
|
self.unwrap_request(request, env)
|
65
67
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright,
|
4
|
+
# Copyright, 2024-2025, by Samuel Williams.
|
5
|
+
# Copyright, 2025, by Francisco Mejia.
|
5
6
|
|
6
7
|
require "console"
|
7
8
|
|
@@ -21,9 +22,6 @@ module Protocol
|
|
21
22
|
RACK_ERRORS => $stderr,
|
22
23
|
RACK_LOGGER => self.logger,
|
23
24
|
|
24
|
-
# The request protocol, either from the upgrade header or the HTTP/2 pseudo header of the same name.
|
25
|
-
RACK_PROTOCOL => request.protocol,
|
26
|
-
|
27
25
|
# The response finished callbacks:
|
28
26
|
RACK_RESPONSE_FINISHED => [],
|
29
27
|
|
@@ -49,8 +47,17 @@ module Protocol
|
|
49
47
|
|
50
48
|
# I'm not sure what sane defaults should be here:
|
51
49
|
CGI::SERVER_NAME => server_name,
|
52
|
-
CGI::SERVER_PORT => server_port,
|
53
50
|
}
|
51
|
+
|
52
|
+
# SERVER_PORT is optional but must not be set if it is not present.
|
53
|
+
if server_port
|
54
|
+
env[CGI::SERVER_PORT] = server_port
|
55
|
+
end
|
56
|
+
|
57
|
+
# The request protocol, either from the upgrade header or the HTTP/2 pseudo header of the same name.
|
58
|
+
if protocol = request.protocol
|
59
|
+
env[RACK_PROTOCOL] = protocol
|
60
|
+
end
|
54
61
|
|
55
62
|
if body = request.body
|
56
63
|
if body.empty?
|
data/license.md
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# MIT License
|
2
2
|
|
3
|
-
Copyright, 2022-
|
3
|
+
Copyright, 2022-2025, by Samuel Williams.
|
4
4
|
Copyright, 2023, by Genki Takiuchi.
|
5
|
+
Copyright, 2025, by Francisco Mejia.
|
5
6
|
|
6
7
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
8
|
of this software and associated documentation files (the "Software"), to deal
|
data/readme.md
CHANGED
@@ -11,6 +11,8 @@ Provides abstractions for working with the Rack specification on top of [`Protoc
|
|
11
11
|
|
12
12
|
## Usage
|
13
13
|
|
14
|
+
Please see the [project documentation](https://socketry.github.io/protocol-rack/) for more details.
|
15
|
+
|
14
16
|
### Application Adapter
|
15
17
|
|
16
18
|
Given a rack application, you can adapt it for use on `async-http`:
|
@@ -61,6 +63,14 @@ run proc{|env|
|
|
61
63
|
}
|
62
64
|
```
|
63
65
|
|
66
|
+
## Releases
|
67
|
+
|
68
|
+
Please see the [project releases](https://socketry.github.io/protocol-rack/releases/index) for all releases.
|
69
|
+
|
70
|
+
### v0.11.2
|
71
|
+
|
72
|
+
- Stop setting `env["SERVER_PORT"]` to `nil` if not present.
|
73
|
+
|
64
74
|
## Contributing
|
65
75
|
|
66
76
|
We welcome contributions to this project.
|
data/releases.md
ADDED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protocol-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
|
+
- Francisco Mejia
|
8
9
|
- Genki Takiuchi
|
9
|
-
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain:
|
12
12
|
- |
|
@@ -38,7 +38,7 @@ cert_chain:
|
|
38
38
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
39
39
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
40
40
|
-----END CERTIFICATE-----
|
41
|
-
date:
|
41
|
+
date: 2025-02-28 00:00:00.000000000 Z
|
42
42
|
dependencies:
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: protocol-http
|
@@ -68,8 +68,6 @@ dependencies:
|
|
68
68
|
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '1.0'
|
71
|
-
description:
|
72
|
-
email:
|
73
71
|
executables: []
|
74
72
|
extensions: []
|
75
73
|
extra_rdoc_files: []
|
@@ -92,13 +90,13 @@ files:
|
|
92
90
|
- lib/protocol/rack/version.rb
|
93
91
|
- license.md
|
94
92
|
- readme.md
|
93
|
+
- releases.md
|
95
94
|
homepage: https://github.com/socketry/protocol-rack
|
96
95
|
licenses:
|
97
96
|
- MIT
|
98
97
|
metadata:
|
99
98
|
documentation_uri: https://socketry.github.io/protocol-rack/
|
100
99
|
source_code_uri: https://github.com/socketry/protocol-rack.git
|
101
|
-
post_install_message:
|
102
100
|
rdoc_options: []
|
103
101
|
require_paths:
|
104
102
|
- lib
|
@@ -113,8 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
111
|
- !ruby/object:Gem::Version
|
114
112
|
version: '0'
|
115
113
|
requirements: []
|
116
|
-
rubygems_version: 3.
|
117
|
-
signing_key:
|
114
|
+
rubygems_version: 3.6.2
|
118
115
|
specification_version: 4
|
119
116
|
summary: An implementation of the Rack protocol/specification.
|
120
117
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|