aboutsummaryrefslogtreecommitdiff
path: root/docs/backends/custom.rst
blob: 86d750acf6781477b9435b3372a827edf78ccde2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Custom backends, logging, metrics
=================================

It is also entirely possible to write your own backend (if so, please consider
contributing!) or wrapping an existing one. You can even write completely 
generic wrappers for any delegate backend, as each backend comes equipped
with a monad for the response type. This brings the possibility to ``map`` and 
``flatMap`` over responses. 

Possible use-cases for wrapper-backend include:
 
* logging
* capturing metrics
* request signing (transforming the request before sending it to the delegate)

To pass some context to wrapper-backends, requests can be *tagged*. Each 
``RequestT`` instance contains a ``tags: Map[String, Any]`` field. This is unused
by http, but can be used e.g. to pass a metric name or logging context.