package mehari
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=930121ceef2893e48cbc91c6dba1349d
sha512=34bf178aa333b2cfe0cbf4586a342848507d06d71f28e5cc26b798ea192cf1c4e5cdf8b32e3395c14fba5f9fbddcf535e264874b9f4bda386c8e0042c4bd60f6
doc/mehari/Mehari/module-type-NET/index.html
Module type Mehari.NETSource
Module type containing all environment-dependent functions.
Type for IP address.
Handlers are asynchronous functions from Mehari.request to Mehari.response.
Rate limiter. See Rate limit.
Middlewares take a handler, and run some code before or after — producing a “bigger” handler. See Middleware.
System clock used by rate limiter.
Middleware
Does nothing but call its inner handler. Useful for disabling middleware conditionally during application startup:
if development then
my_middleware
else
Mehari.no_middlewareCombines a list of middlewares into one, such that these two lines are equivalent: Mehari.pipeline [ mw1 ; mw2 ] @@ handler mw1 @@ mw2 @@ handler.
Routing
Creates a router. If none of the routes match the Mehari.request, the router returns Mehari.not_found.
val route :
?rate_limit:rate_limiter ->
?mw:middleware ->
?regex:bool ->
string ->
handler ->
routeroute ~rate_limit ~mw ~regex path handler forwards requests for path to handler. path can be a string literal or a regex in Perl style depending of value of regex. If rate limit is in effect, handler is not executed and a respond with Mehari.status Mehari.slow_down is sended.
scope ~rate_limit ~mw prefix routes groups routes under the path prefix, rate_limit and mw.
A dummy value of type route that is completely ignored by the router. Useful for disabling routes conditionally during application start.
Rate limit
val make_rate_limit :
clock ->
?period:int ->
int ->
[ `Second | `Minute | `Hour | `Day ] ->
rate_limitermake_rate_limit clock ~period n unit creates a rate_limiter which limits client to n request per period * unit. For example,
make_rate_limit ~period:2 5 `Hourlimits client to 5 requests every 2 hours.
Virtual hosting
virtual_hosts ?meth [(domain, handler); ...] produces a handler which enables virtual hosting at the TLS-layer using SNI.
methcan be used to choose which source to match the hostnames against. Defaults to`SNI.
Logging
Set Mehari's logger to the given log level.
Logs and times requests. Time spent logging is included.