Skip to content

Commit 845e14b

Browse files
author
bors-servo
committed
Auto merge of #134 - mikedilger:value_chars, r=SimonSapin
Added VALUE_CHARS EncodeSet This character set is based off of rfc5987 section 3.2 https://tools.ietf.org/html/rfc5987#section-3.2 for the ABNF `value-chars` which is used by certain HTTP header field values such as Content-Disposition `filename*` Not sure about the constant name 'VALUE_CHARS' <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/rust-url/134) <!-- Reviewable:end -->
2 parents fedf144 + 00fd5e3 commit 845e14b

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

make_encode_sets.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
('PASSWORD', r''' "#<>`?{}@\/'''),
3030
('USERNAME', r''' "#<>`?{}@\/:'''),
3131
('FORM_URLENCODED', r''' !"#$%&\'()+,/:;<=>?@[\]^`{|}~'''),
32+
('HTTP_VALUE', r''' "%'()*,/:;<->?[\]{}'''),
3233
]:
3334
print(
3435
"pub static %s: [&'static str; 256] = [\n%s\n];\n\n"

src/encode_sets.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,3 +260,39 @@ pub static FORM_URLENCODED: [&'static str; 256] = [
260260
];
261261

262262

263+
pub static HTTP_VALUE: [&'static str; 256] = [
264+
"%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07",
265+
"%08", "%09", "%0A", "%0B", "%0C", "%0D", "%0E", "%0F",
266+
"%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17",
267+
"%18", "%19", "%1A", "%1B", "%1C", "%1D", "%1E", "%1F",
268+
"%20", "!", "%22", "#", "$", "%25", "&", "%27",
269+
"%28", "%29", "%2A", "+", "%2C", "%2D", ".", "%2F",
270+
"0", "1", "2", "3", "4", "5", "6", "7",
271+
"8", "9", "%3A", "%3B", "%3C", "=", "%3E", "%3F",
272+
"@", "A", "B", "C", "D", "E", "F", "G",
273+
"H", "I", "J", "K", "L", "M", "N", "O",
274+
"P", "Q", "R", "S", "T", "U", "V", "W",
275+
"X", "Y", "Z", "%5B", "%5C", "%5D", "^", "_",
276+
"`", "a", "b", "c", "d", "e", "f", "g",
277+
"h", "i", "j", "k", "l", "m", "n", "o",
278+
"p", "q", "r", "s", "t", "u", "v", "w",
279+
"x", "y", "z", "%7B", "|", "%7D", "~", "%7F",
280+
"%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87",
281+
"%88", "%89", "%8A", "%8B", "%8C", "%8D", "%8E", "%8F",
282+
"%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97",
283+
"%98", "%99", "%9A", "%9B", "%9C", "%9D", "%9E", "%9F",
284+
"%A0", "%A1", "%A2", "%A3", "%A4", "%A5", "%A6", "%A7",
285+
"%A8", "%A9", "%AA", "%AB", "%AC", "%AD", "%AE", "%AF",
286+
"%B0", "%B1", "%B2", "%B3", "%B4", "%B5", "%B6", "%B7",
287+
"%B8", "%B9", "%BA", "%BB", "%BC", "%BD", "%BE", "%BF",
288+
"%C0", "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7",
289+
"%C8", "%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF",
290+
"%D0", "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D7",
291+
"%D8", "%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF",
292+
"%E0", "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7",
293+
"%E8", "%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF",
294+
"%F0", "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7",
295+
"%F8", "%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF",
296+
];
297+
298+

src/percent_encoding.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ pub static FORM_URLENCODED_ENCODE_SET: EncodeSet = EncodeSet {
5555
map: &encode_sets::FORM_URLENCODED,
5656
};
5757

58+
/// This encode set is used for HTTP header values and is defined at
59+
/// https://tools.ietf.org/html/rfc5987#section-3.2
60+
pub static HTTP_VALUE_ENCODE_SET: EncodeSet = EncodeSet { map: &encode_sets::HTTP_VALUE };
5861

5962
/// Percent-encode the given bytes, and push the result to `output`.
6063
///

0 commit comments

Comments
 (0)