protocol-http 0.69.0 → 0.70.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/lib/protocol/http/header/accept.rb +9 -0
- data/lib/protocol/http/header/accept_charset.rb +9 -0
- data/lib/protocol/http/header/accept_encoding.rb +9 -0
- data/lib/protocol/http/header/accept_language.rb +9 -0
- data/lib/protocol/http/header/split.rb +8 -0
- data/lib/protocol/http/header/te.rb +9 -0
- data/lib/protocol/http/version.rb +1 -1
- data/readme.md +4 -4
- data/releases.md +4 -0
- data.tar.gz.sig +0 -0
- metadata +1 -1
- 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: 0bb8c2ea5ebb91d57bce473ec02b7cde1a0ca205194f7d60776114ec385abe09
|
|
4
|
+
data.tar.gz: 2c5bfedf8006d995f3959fe7dcf7c81b720633bccc44b05e80e1fd227a6002b1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d42efaceae6b232ddd02d0d07dbe1a710da7e68315664c58b0e691fb47d195d6bd13ac8caeb9fda0e7a17c994e9aceb8c3811d40e6cea71eeb34492db7cc0598
|
|
7
|
+
data.tar.gz: be0a550a6038da525c836c4cd1219b4587a3fe9731c9e399c5c1b5a5cdd7fe633e8b9d5322e0aad0c4a4b39c0ca4122052fd5e7362afbf9ceddd72bb0de1a6c1
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
|
@@ -107,6 +107,15 @@ module Protocol
|
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
+
# Parse the `accept` header and order media ranges by preference.
|
|
111
|
+
#
|
|
112
|
+
# Media ranges with equal quality factors retain their original relative order.
|
|
113
|
+
#
|
|
114
|
+
# @returns [Array(MediaRange)] the preferred media ranges.
|
|
115
|
+
def preferred_media_ranges
|
|
116
|
+
sort_by_quality_factor(media_ranges)
|
|
117
|
+
end
|
|
118
|
+
|
|
110
119
|
private
|
|
111
120
|
|
|
112
121
|
def parse_media_range(value)
|
|
@@ -47,6 +47,15 @@ module Protocol
|
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
|
+
|
|
51
|
+
# Parse the `accept-charset` header and order character sets by preference.
|
|
52
|
+
#
|
|
53
|
+
# Character sets with equal quality factors retain their original relative order.
|
|
54
|
+
#
|
|
55
|
+
# @returns [Array(Charset)] the preferred character sets.
|
|
56
|
+
def preferred_charsets
|
|
57
|
+
sort_by_quality_factor(charsets)
|
|
58
|
+
end
|
|
50
59
|
end
|
|
51
60
|
end
|
|
52
61
|
end
|
|
@@ -50,6 +50,15 @@ module Protocol
|
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
|
+
|
|
54
|
+
# Parse the `accept-encoding` header and order encodings by preference.
|
|
55
|
+
#
|
|
56
|
+
# Encodings with equal quality factors retain their original relative order.
|
|
57
|
+
#
|
|
58
|
+
# @returns [Array(Encoding)] the preferred encodings.
|
|
59
|
+
def preferred_encodings
|
|
60
|
+
sort_by_quality_factor(encodings)
|
|
61
|
+
end
|
|
53
62
|
end
|
|
54
63
|
end
|
|
55
64
|
end
|
|
@@ -53,6 +53,15 @@ module Protocol
|
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
|
+
|
|
57
|
+
# Parse the `accept-language` header and order languages by preference.
|
|
58
|
+
#
|
|
59
|
+
# Languages with equal quality factors retain their original relative order.
|
|
60
|
+
#
|
|
61
|
+
# @returns [Array(Language)] the preferred languages.
|
|
62
|
+
def preferred_languages
|
|
63
|
+
sort_by_quality_factor(languages)
|
|
64
|
+
end
|
|
56
65
|
end
|
|
57
66
|
end
|
|
58
67
|
end
|
|
@@ -77,6 +77,14 @@ module Protocol
|
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
protected
|
|
80
|
+
# Order weighted values by descending quality while preserving their relative order.
|
|
81
|
+
# @parameter values [Enumerable] The values which respond to `#quality_factor`.
|
|
82
|
+
# @returns [Array] The ordered values.
|
|
83
|
+
def sort_by_quality_factor(values)
|
|
84
|
+
values.sort_by.with_index do |value, index|
|
|
85
|
+
[-value.quality_factor, index]
|
|
86
|
+
end
|
|
87
|
+
end
|
|
80
88
|
|
|
81
89
|
def reverse_find(&block)
|
|
82
90
|
reverse_each do |value|
|
|
@@ -113,6 +113,15 @@ module Protocol
|
|
|
113
113
|
end
|
|
114
114
|
end
|
|
115
115
|
|
|
116
|
+
# Parse the `te` header and order transfer codings by preference.
|
|
117
|
+
#
|
|
118
|
+
# Transfer codings with equal quality factors retain their original relative order.
|
|
119
|
+
#
|
|
120
|
+
# @returns [Array(TransferCoding)] the preferred transfer codings.
|
|
121
|
+
def preferred_transfer_codings
|
|
122
|
+
sort_by_quality_factor(transfer_codings)
|
|
123
|
+
end
|
|
124
|
+
|
|
116
125
|
# @returns [Boolean] whether the `chunked` encoding is accepted.
|
|
117
126
|
def chunked?
|
|
118
127
|
self.any?{|value| value.start_with?(CHUNKED)}
|
data/readme.md
CHANGED
|
@@ -30,6 +30,10 @@ Please see the [project documentation](https://socketry.github.io/protocol-http/
|
|
|
30
30
|
|
|
31
31
|
Please see the [project releases](https://socketry.github.io/protocol-http/releases/index) for all releases.
|
|
32
32
|
|
|
33
|
+
### v0.70.0
|
|
34
|
+
|
|
35
|
+
- Add stable preference ordering for weighted `Accept`, `Accept-Charset`, `Accept-Encoding`, `Accept-Language`, and `TE` values.
|
|
36
|
+
|
|
33
37
|
### v0.69.0
|
|
34
38
|
|
|
35
39
|
- Add `Protocol::HTTP::Body::Readable#to_io` for obtaining an IO-compatible stream adapter.
|
|
@@ -68,10 +72,6 @@ Please see the [project releases](https://socketry.github.io/protocol-http/relea
|
|
|
68
72
|
|
|
69
73
|
- Introduce `Protocol::HTTP::RefusedError` for indicating a stream or request was refused before processing and can be safely retried. `RequestRefusedError` is provided as an alias for backwards compatibility.
|
|
70
74
|
|
|
71
|
-
### v0.60.0
|
|
72
|
-
|
|
73
|
-
- Expose `Protocol::HTTP::Body::Writable#count` attribute to provide access to the number of chunks written to the body.
|
|
74
|
-
|
|
75
75
|
## See Also
|
|
76
76
|
|
|
77
77
|
- [protocol-http1](https://github.com/socketry/protocol-http1) — HTTP/1 client/server implementation using this
|
data/releases.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Releases
|
|
2
2
|
|
|
3
|
+
## v0.70.0
|
|
4
|
+
|
|
5
|
+
- Add stable preference ordering for weighted `Accept`, `Accept-Charset`, `Accept-Encoding`, `Accept-Language`, and `TE` values.
|
|
6
|
+
|
|
3
7
|
## v0.69.0
|
|
4
8
|
|
|
5
9
|
- Add `Protocol::HTTP::Body::Readable#to_io` for obtaining an IO-compatible stream adapter.
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
metadata.gz.sig
CHANGED
|
Binary file
|