From 25259671f51c076720b64959a700263eaa0937b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Tue, 23 Sep 2014 21:36:52 +0300 Subject: Make routing constraints use the fields format This makes routing more in line with the rest of Cowboy and allows us to use cowboy_constraints directly. --- doc/src/guide/routing.ezdoc | 26 ++++++++------------------ doc/src/manual/cowboy_router.ezdoc | 19 ++----------------- 2 files changed, 10 insertions(+), 35 deletions(-) (limited to 'doc') diff --git a/doc/src/guide/routing.ezdoc b/doc/src/guide/routing.ezdoc index e7b43f2..2482c12 100644 --- a/doc/src/guide/routing.ezdoc +++ b/doc/src/guide/routing.ezdoc @@ -191,26 +191,16 @@ HostMatch = "*". After the matching has completed, the resulting bindings can be tested against a set of constraints. Constraints are only tested when the binding is defined. They run in the order you defined them. The match -will succeed only if they all succeed. +will succeed only if they all succeed. If the match fails, then Cowboy +tries the next route in the list. -They are always given as a two or three elements tuple, where the first -element is the name of the binding, the second element is the constraint's -name, and the optional third element is the constraint's arguments. +The format used for constraints is the same as match functions in +`cowboy_req`: they are provided as a list of fields which may have +one or more constraints. While the router accepts the same format, +it will skip fields with no constraints and will also ignore default +values, if any. -The following constraints are currently defined: - -* {Name, int} -* {Name, function, fun ((Value) -> true | {true, NewValue} | false)} - -The `int` constraint will check if the binding is a binary string -representing an integer, and if it is, will convert the value to integer. - -The `function` constraint will pass the binding value to a user specified -function that receives the binary value as its only argument and must -return whether it fulfills the constraint, optionally modifying the value. -The value thus returned can be of any type. - -Note that constraint functions SHOULD be pure and MUST NOT crash. +Read more about ^constraints^. :: Compilation diff --git a/doc/src/manual/cowboy_router.ezdoc b/doc/src/manual/cowboy_router.ezdoc index f76acf6..8d45e67 100644 --- a/doc/src/manual/cowboy_router.ezdoc +++ b/doc/src/manual/cowboy_router.ezdoc @@ -22,31 +22,16 @@ Environment output: List of bindings found during routing. -: constraints() = [IntConstraint | FunConstraint] - -Types: - -* IntConstraint = {atom(), int} -* FunConstraint = {atom(), function, Fun} -* Fun = fun((binary()) -> true | {true, any()} | false) - -List of constraints to apply to the bindings. - -The int constraint will convert the binding to an integer. -The fun constraint allows writing custom code for checking -the bindings. Returning a new value from that fun allows -replacing the current binding with a new value. - : dispatch_rules() - opaque to the user Rules for dispatching request used by Cowboy. -: routes() = [{Host, Paths} | {Host, constraints(), Paths}] +: routes() = [{Host, Paths} | {Host, cowboy:fields(), Paths}] Types: * Host = Path = '_' | iodata() -* Paths = [{Path, Handler, Opts} | {Path, constraints(), Handler, Opts}] +* Paths = [{Path, Handler, Opts} | {Path, cowboy:fields(), Handler, Opts}] * Handler = module() * Opts = any() -- cgit v1.2.3