Plug v1.8.1 Plug.Conn.Utils View Source
Utilities for working with connection data
Link to this section Summary
Link to this section Types
Link to this type
params() View Source
Link to this section Functions
Link to this function
content_type(binary) View Source
Parses content type (without wildcards).
It is similar to media_type/1
except wildcards are
not accepted in the type nor in the subtype.
Examples
iex> content_type "x-sample/json; charset=utf-8"
{:ok, "x-sample", "json", %{"charset" => "utf-8"}}
iex> content_type "x-sample/json ; charset=utf-8 ; foo=bar"
{:ok, "x-sample", "json", %{"charset" => "utf-8", "foo" => "bar"}}
iex> content_type "\r\n text/plain;\r\n charset=utf-8\r\n"
{:ok, "text", "plain", %{"charset" => "utf-8"}}
iex> content_type "text/plain"
{:ok, "text", "plain", %{}}
iex> content_type "x/*"
:error
iex> content_type "*/*"
:error
Link to this function
list(binary) View Source
Parses a comma-separated list of header values.
Examples
iex> list("foo, bar")
["foo", "bar"]
iex> list("foobar")
["foobar"]
iex> list("")
[]
iex> list("empties, , are,, filtered")
["empties", "are", "filtered"]
Link to this function
media_type(binary) View Source
Parses media types (with wildcards).
Type and subtype are case insensitive while the sensitiveness of params depends on their keys and therefore are not handled by this parser.
Returns:
{:ok, type, subtype, map_of_params}
if everything goes fine:error
if the media type isn't valid
Examples
iex> media_type "text/plain"
{:ok, "text", "plain", %{}}
iex> media_type "APPLICATION/vnd.ms-data+XML"
{:ok, "application", "vnd.ms-data+xml", %{}}
iex> media_type "text/*; q=1.0"
{:ok, "text", "*", %{"q" => "1.0"}}
iex> media_type "*/*; q=1.0"
{:ok, "*", "*", %{"q" => "1.0"}}
iex> media_type "x y"
:error
iex> media_type "*/html"
:error
iex> media_type "/"
:error
iex> media_type "x/y z"
:error
Link to this function
params(t) View Source
Parses headers parameters.
Keys are case insensitive and downcased, invalid key-value pairs are discarded.
Examples
iex> params("foo=bar")
%{"foo" => "bar"}
iex> params(" foo=bar ")
%{"foo" => "bar"}
iex> params("FOO=bar")
%{"foo" => "bar"}
iex> params("Foo=bar; baz=BOING")
%{"foo" => "bar", "baz" => "BOING"}
iex> params("foo=BAR ; wat")
%{"foo" => "BAR"}
iex> params("foo=\"bar\"; baz=\"boing\"")
%{"foo" => "bar", "baz" => "boing"}
iex> params("foo=\"bar;\"; baz=\"boing\"")
%{"foo" => "bar;", "baz" => "boing"}
iex> params("=")
%{}
Link to this function
token(token) View Source
Parses a value as defined in RFC-1341.
For convenience, trims whitespace at the end of the token.
Returns false
if the token is invalid.
Examples
iex> token("foo")
"foo"
iex> token("foo-bar")
"foo-bar"
iex> token("<foo>")
false
iex> token(~s["<foo>"])
"<foo>"
iex> token(~S["<f\oo>\"<b\ar>"])
"<foo>\"<bar>"
iex> token("foo ")
"foo"
iex> token("foo bar")
false
Link to this function
validate_utf8!(binary, exception, context) View Source
Validates the given binary is valid UTF-8.