Module hb_escape.erl¶
Escape and unescape mixed case values for use in HTTP headers.
Description¶
This is necessary for encodings of AO-Core messages for transmission in HTTP/2 and HTTP/3, because uppercase header keys are explicitly disallowed. While most map keys in HyperBEAM are normalized to lowercase, IDs are not. Subsequently, we encode all header keys to lowercase %-encoded URI-style strings because transmission.
Function Index¶
decode/1 | Decode a URI-encoded string back to a binary. |
decode_keys/2 | Return a message with all of its keys decoded. |
encode/1 | Encode a binary as a URI-encoded string. |
encode_keys/2 | URI encode keys in the base layer of a message. |
escape_byte/1* | Escape a single byte as a URI-encoded string. |
escape_unescape_identity_test/0* | |
escape_unescape_special_chars_test/0* | |
hex_digit/1* | |
hex_value/1* | |
percent_escape/1* | Escape a list of characters as a URI-encoded string. |
percent_unescape/1* | Unescape a URI-encoded string. |
unescape_specific_test/0* | |
uppercase_test/0* |
Function Details¶
decode/1¶
decode(Bin) -> any()
Decode a URI-encoded string back to a binary.
decode_keys/2¶
decode_keys(Msg, Opts) -> any()
Return a message with all of its keys decoded.
encode/1¶
encode(Bin) -> any()
Encode a binary as a URI-encoded string.
encode_keys/2¶
encode_keys(Msg, Opts) -> any()
URI encode keys in the base layer of a message. Does not recurse.
escape_byte/1 *¶
escape_byte(C) -> any()
Escape a single byte as a URI-encoded string.
escape_unescape_identity_test/0 *¶
escape_unescape_identity_test() -> any()
escape_unescape_special_chars_test/0 *¶
escape_unescape_special_chars_test() -> any()
hex_digit/1 *¶
hex_digit(N) -> any()
hex_value/1 *¶
hex_value(C) -> any()
percent_escape/1 *¶
percent_escape(Cs) -> any()
Escape a list of characters as a URI-encoded string.
percent_unescape/1 *¶
percent_unescape(Cs) -> any()
Unescape a URI-encoded string.
unescape_specific_test/0 *¶
unescape_specific_test() -> any()
uppercase_test/0 *¶
uppercase_test() -> any()