URI utility module

This module provides utility functions for working with URIs, according to RFC 3986.


Type definitions that are used more than once in this module:

boolean() = true | false 
string()  = list of ASCII characters 


Type definitions that are related to URI:

For more information about URI, see RFC 3986.

uri()       = string() - Syntax according to the URI definition in rfc 3986,
                         e.g.: ""
user_info() = string()
scheme()    = atom()   - Example: http, https
host()      = string()
port()      = pos_integer()
path()      = string() - Representing a file path or directory path 
query()     = string()


scheme_defaults() -> SchemeDefaults

  • SchemeDefaults = [{scheme(), default_scheme_port_number()}]
  • default_scheme_port_number() = pos_integer()

This function provides a list of the scheme and their default port numbers currently supported (by default) by this utility.

parse(URI) -> {ok, Result} | {error, Reason}

parse(URI, Options) -> {ok, Result} | {error, Reason}

  • URI = uri()
  • Options = [Option]
  • Option = {ipv6_host_with_brackets, boolean()} | {scheme_defaults, scheme_defaults()}]
  • Result = {Scheme, UserInfo, Host, Port, Path, Query}
  • UserInfo = user_info()
  • Host = host()
  • Port = pos_integer()
  • Path = path()
  • Query = query()
  • Reason = term()

This function is used to parse an URI. If no scheme defaults are provided, the value of scheme_defaults function will be used.

Note that when parsing an URI with an unknown scheme (that is, a scheme not found in the scheme defaults) a port number must be provided or else the parsing will fail.

encode(URI) -> HexEncodedURI

  • URI = uri()
  • HexEncodedURI = string() - Hex encoded uri

Hex encode an URI.

decode(HexEncodedURI) -> URI

  • HexEncodedURI = string() - A possibly hex encoded uri
  • URI = uri()

Decode a possibly hex encoded URI.