Skip to content

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/1Decode a URI-encoded string back to a binary.
decode_keys/2Return a message with all of its keys decoded.
encode/1Encode a binary as a URI-encoded string.
encode_keys/2URI 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()