= cowboy_constraints(3)

== Name

cowboy_constraints - Constraints

== Description

The module `cowboy_constraints` defines the built-in
constraints in Cowboy and provides an interface for
manipulating these constraints.

Constraints are functions that define what type of
input is allowed. They are used throughout Cowboy,
from the router to query strings to cookies.

== Exports

Built-in constraints:

* link:man:cowboy_constraints:int(3)[cowboy_constraints:int(3)] - Integer constraint
* link:man:cowboy_constraints:nonempty(3)[cowboy_constraints:nonempty(3)] - Non-empty constraint

Constraint generators:

* link:man:cowboy_constraints:from_fun(3)[cowboy_constraints:from_fun(3)] - Create a constraint from a 1-arity function

== Types

=== constraint()

[source,erlang]
----
constraint() :: int | nonempty | fun()
----

A constraint function.

The atom constraints are built-in, see the corresponding
function in the exports list above.

=== reason()

[source,erlang]
----
reason() :: {constraint(), Reason, Value}

Reason :: any()
Value  :: any()
----

Reason for the constraint failure.

It includes the constraint function in question,
a machine-readable error reason and the value that
made the constraint fail.

== See also

link:man:cowboy(7)[cowboy(7)],
link:man:cowboy(3)[cowboy(3)],
link:man:cowboy_router(3)[cowboy_router(3)],
link:man:cowboy_req:match_cookies(3)[cowboy_req:match_cookies(3)],
link:man:cowboy_req:match_qs(3)[cowboy_req:match_qs(3)]
