base64url

Prism for encoding / decoding base64url. To encode, review base64url. To decode, preview base64url. Works with any combinations of strict/lazy ByteString.
Implemented as specified in RFC 4648 (http://tools.ietf.org/html/rfc4648). The difference compared to vanilla Base64 encoding is just in two characters. In Base64 the characters /+ are used, and in Base64Url they are replaced by _- respectively. Please refer to Codec.Binary.Base64 for the details of all functions in this module.
Convert a bytestring to base64url (a variant of base64 which omits / and thus can be used in URLs):
>>> base64UrlF ("\0\50\63\80" :: BS.ByteString)
"ADI_UA=="
unpadded URL-safe Base64
Transform a number of bytes pointed by src to, URL-safe base64 binary representation in dst. The result will be either padded or unpadded, depending on the boolean padded argument. The destination memory need to be of correct size, otherwise it will lead to really bad things.
Tell whether a ByteString is encoded in padded or unpadded Base64url format. This function will also detect non-canonical encodings such as ZE==, which are externally valid Base64url-encoded values, but are internally inconsistent "impossible" values.

Examples:

>>> isBase64Url "PDw_Pj4="
True
>>> isBase64Url "PDw_Pj4"
True
>>> isBase64Url "PDw_Pj"
False
Tell whether a ByteString is a valid Base64url format. This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded ByteString value, use isBase64Url.

Examples:

>>> isValidBase64Url "PDw_Pj4="
True
>>> isValidBase64Url "PDw_Pj"
True
>>> isValidBase64Url "%"
False
Tell whether an untyped ByteString is Base64url-encoded.

Examples:

>>> isBase64Url "PDw_Pj4="
True
>>> isBase64Url "PDw_Pj4"
True
>>> isBase64Url "PDw_Pj"
False
Tell whether an untyped ByteString is a valid Base64url format. This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded ByteString value, use isBase64Url.

Examples:

>>> isValidBase64Url "PDw_Pj4="
True
>>> isValidBase64Url "PDw_Pj"
True
>>> isValidBase64Url "%"
False
Tell whether an untyped ShortByteString is Base64url-encoded.

Examples:

>>> isBase64Url "PDw_Pj4="
True
>>> isBase64Url "PDw_Pj4"
True
>>> isBase64Url "PDw_Pj"
False
Tell whether an untyped ShortByteString is a valid Base64url format. This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded ShortByteString value, use isBase64Url.

Examples:

>>> isValidBase64Url "PDw_Pj4="
True
>>> isValidBase64Url "PDw_Pj"
True
>>> isValidBase64Url "%"
False
Tell whether an untyped Text value is Base64url-encoded.

Examples:

>>> isBase64Url "PDw_Pj4="
True
>>> isBase64Url "PDw_Pj4"
True
>>> isBase64Url "PDw_Pj"
False
Tell whether an untyped Text value is a valid Base64url format. This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded Text value, use isBase64Url.

Examples:

>>> isValidBase64Url "PDw_Pj4="
True
>>> isValidBase64Url "PDw_Pj"
True
>>> isValidBase64Url "%"
False
Tell whether an untyped Text value is Base64url-encoded

Examples:

>>> isBase64Url "PDw_Pj4="
True
>>> isBase64Url "PDw_Pj4"
True
>>> isBase64Url "PDw_Pj"
False
Tell whether an untyped ShortText value is Base64url-encoded.

Examples:

>>> isBase64Url "PDw_Pj4="
True
>>> isBase64Url "PDw_Pj4"
True
>>> isBase64Url "PDw_Pj"
False
Tell whether an untyped ShortText value is a valid Base64url format. This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded ShortText value, use isBase64Url.

Examples:

>>> isValidBase64Url "PDw_Pj4="
True
>>> isValidBase64Url "PDw_Pj"
True
>>> isValidBase64Url "%"
False
Transform string src to URL-safe base64 binary representation. The result will be either padded or unpadded, depending on the boolean padded argument.