aboutsummaryrefslogtreecommitdiffstats
path: root/manual/cowboy_middleware.md
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2013-05-17 13:13:27 +0200
committerLoïc Hoguin <[email protected]>2013-05-17 13:13:27 +0200
commit666c59bc422172562673916ed3a8a796c4f9fbf4 (patch)
treef561151846de077513fa767edc10165a469d09ef /manual/cowboy_middleware.md
parent0e0ec7b1203a8490ee9a876f9274fe0c64e708f8 (diff)
downloadcowboy-666c59bc422172562673916ed3a8a796c4f9fbf4.tar.gz
cowboy-666c59bc422172562673916ed3a8a796c4f9fbf4.tar.bz2
cowboy-666c59bc422172562673916ed3a8a796c4f9fbf4.zip
Add the Cowboy Function Reference
The manual details every stable public functions of Cowboy.
Diffstat (limited to 'manual/cowboy_middleware.md')
-rw-r--r--manual/cowboy_middleware.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/manual/cowboy_middleware.md b/manual/cowboy_middleware.md
new file mode 100644
index 0000000..dd28ff8
--- /dev/null
+++ b/manual/cowboy_middleware.md
@@ -0,0 +1,56 @@
+cowboy_middleware
+=================
+
+The `cowboy_middleware` behaviour defines the interface used
+by Cowboy middleware modules.
+
+Middlewares process the request sequentially in the order they
+are configured.
+
+Types
+-----
+
+### env() = [{atom(), any()}]
+
+> The environment variable.
+>
+> One is created for every request. It is passed to each
+> middleware module executed and subsequently returned,
+> optionally with its contents modified.
+
+Callbacks
+---------
+
+### execute(Req, Env)
+ -> {ok, Req, Env}
+ | {suspend, Module, Function, Args}
+ | {halt, Req}
+ | {error, StatusCode, Req}
+
+> Types:
+> * Req = cowboy_req:req()
+> * Env = env()
+> * Module = module()
+> * Function = atom()
+> * Args = [any()]
+> * StatusCode = cowboy:http_status()
+>
+> Execute the middleware.
+>
+> The `ok` return value indicates that everything went well
+> and that Cowboy should continue processing the request. A
+> response may or may not have been sent.
+>
+> The `suspend` return value will hibernate the process until
+> an Erlang message is received. Note that when resuming, any
+> previous stacktrace information will be gone.
+>
+> The `halt` return value stops Cowboy from doing any further
+> processing of the request, even if there are middlewares
+> that haven't been executed yet. The connection may be left
+> open to receive more requests from the client.
+>
+> The `error` return value sends an error response identified
+> by the `StatusCode` and then proceeds to terminate the
+> connection. Middlewares that haven't been executed yet
+> will not be called.