====== util.encodings API ======
Provides an interface for translating a string into various common encodings.
Currently provided are: base64, idna, stringprep.
===== Usage =====
local encodings = require "util.encodings";
print(encodings.base64.encode("Hello world!")) -- prints "SGVsbG8gd29ybGQh"
-- or individually --
local base64 = require "util.encodings".base64;
local idna = require "util.encodings".idna;
local stringprep = require "util.encodings".stringprep;
===== Reference =====
==== base64 ====
=== encode(string) ===
Returns a base64-encoded equivalent of a string.
=== decode(string) ===
Returns a decoded equivalent of a base64 string, or nil if the string is invalid base64.
==== idna ====
IDNA provides a way to safely convert unicode domain names to an ASCII equivalent, and back again.
=== to_ascii(string) ===
Returns an ASCII-safe version of a unicode domain name, or nil for an invalid domain.
Example:
print(encodings.idna.to_ascii("➡.ws"))
xn--hgi.ws
=== to_unicode(string) ===
Returns the original unicode version of an ASCII IDNA-encoded domain.
Example:
print(encodings.idna.to_ascii("➡.ws"))
➡.ws
==== stringprep ====
Stringprep defines a way of processing and normalizing strings according to a set of rules (a profile). Prosody implements 4profiles:
* nodeprep (for usernames, the node part of a JID)
* resourceprep (for resources and MUC nicknames)
* saslprep (for applying to strings prior to calculating SASL challenges)
* nameprep (for applying to hostnames/domains)
Example:
print(encodings.stringprep.nodeprep("HelloWorld"))
helloworld
All stringprep functions return nil when the input is not a valid string in that particular profile.