mochiweb_util

Utilities for parsing and quoting.

Utilities for parsing and quoting.

DATA TYPES

encoding() = string()
qvalue() = {encoding(), float()}

Functions


cmd(Argv::[string()]) -> string()

os:cmd(cmd_string(Argv)).

cmd_port(Argv::[string()], Options) -> port()

open_port({spawn, mochiweb_util:cmd_string(Argv)}, Options).

cmd_status(Argv::[string()]) -> {ExitStatus::integer(), Stdout::binary()}

Accumulate the output and exit status from the given application, will be spawned with cmd_port/2.

cmd_string(Argv::[string()]) -> string()

Create a shell quoted command string from a list of arguments.

guess_mime(File::string()) -> string()

Guess the mime type of a file by the extension of its filename.

join(Strings::[iolist()], Separator::iolist()) -> iolist()

Join a list of strings or binaries together with the given separator string or char or binary. The output is flattened, but may be an iolist() instead of a string() if any of the inputs are binary().

make_io(Atom) -> term()

parse_header(String::string()) -> {Type, [{K, V}]}

Parse a Content-Type like header, return the main Content-Type and a property list of options.

parse_qs(Binary::string() | binary()) -> [{Key, Value}]

Parse a query string or application/x-www-form-urlencoded.

parse_qvalues(QValuesStr::string()) -> [qvalue()] | invalid_qvalue_string

Parses a list (given as a string) of elements with Q values associated to them. Elements are separated by commas and each element is separated from its Q value by a semicolon. Q values are optional but when missing the value of an element is considered as 1.0. A Q value is always in the range [0.0, 1.0]. A Q value list is used for example as the value of the HTTP "Accept-Encoding" header.

Q values are described in section 2.9 of the RFC 2616 (HTTP 1.1).

Example:

parse_qvalues("gzip; q=0.5, deflate, identity;q=0.0") -> [{"gzip", 0.5}, {"deflate", 1.0}, {"identity", 0.0}]

partition(String, Sep) -> {String, [], []} | {Prefix, Sep, Postfix}

Inspired by Python 2.5's str.partition: partition("foo/bar", "/") = {"foo", "/", "bar"}, partition("foo", "/") = {"foo", "", ""}.

path_split(S::string()) -> {Part, Rest}

Split a path starting from the left, as in URL traversal. path_split("foo/bar") = {"foo", "bar"}, path_split("/foo/bar") = {"", "foo/bar"}.

pick_accepted_encodings(AcceptedEncs::[qvalue()], SupportedEncs::[encoding()], DefaultEnc::encoding()) -> [encoding()]

Determines which encodings specified in the given Q values list are valid according to a list of supported encodings and a default encoding.

The returned list of encodings is sorted, descendingly, according to the Q values of the given list. The last element of this list is the given default encoding unless this encoding is explicitily or implicitily marked with a Q value of 0.0 in the given Q values list. Note: encodings with the same Q value are kept in the same order as found in the input Q values list.

This encoding picking process is described in section 14.3 of the RFC 2616 (HTTP 1.1).

Example:

pick_accepted_encodings( [{"gzip", 0.5}, {"deflate", 1.0}], ["gzip", "identity"], "identity" ) -> ["gzip", "identity"]

quote_plus(Atom::atom() | integer() | float() | string() | binary()) -> string()

URL safe encoding of the given term.

record_to_proplist(Record, Fields) -> proplist()

calls record_to_proplist/3 with a default TypeKey of '__record'

record_to_proplist(Record, Fields, TypeKey) -> proplist()

Return a proplist of the given Record with each field in the Fields list set as a key with the corresponding value in the Record. TypeKey is the key that is used to store the record type Fields should be obtained by calling record_info(fields, record_type) where record_type is the record type of Record

safe_relative_path(P::string()) -> string() | undefined

Return the reduced version of a relative path or undefined if it is not safe. safe relative paths can be joined with an absolute path and will result in a subdirectory of the absolute path.

shell_quote(L::string()) -> string()

Quote a string according to UNIX shell quoting rules, returns a string surrounded by double quotes.

unquote(Binary::string() | binary()) -> string()

Unquote a URL encoded string.

urlencode(Props::[{Key, Value}]) -> string()

URL encode the property list.

urlsplit(Url) -> {Scheme, Netloc, Path, Query, Fragment}

Return a 5-tuple, does not expand % escapes. Only supports HTTP style URLs.

urlsplit_path(Path::Url) -> {Path, Query, Fragment}

Return a 3-tuple, does not expand % escapes. Only supports HTTP style paths.

urlunsplit(X1::{Scheme, Netloc, Path, Query, Fragment}) -> string()

Assemble a URL from the 5-tuple. Path must be absolute.

urlunsplit_path(X1::{Path, Query, Fragment}) -> string()

Assemble a URL path from the 3-tuple.

Bob Ippolito bob@mochimedia.com
View Functions