Middleware Factories#

The middleware factory differ from the middleware in their need and usage. A middleware is global, and, sometimes, middleware data may differ per incoming requests.

The middleware factory, build a middleware and inject in in the blacksmith client on instanciation.

The main use case is for forwardin header

Forward http headers#

The list of middleware are defined under the setting key blacksmith.client.middleware_factories, as in the example above.

blacksmith.client.middleware_factories =
   forward_header

blacksmith.client.middleware_factory.forward_header =
   Authorization

Then each middleware should be configured under the key blacksmith.client.middleware.<name> such as blacksmith.client.middleware.forward_header in the example below.

In this example, the forward_header middleware factory will forward the Authorization header if present in the Pyramid request, to every blacksmith instanciated clients without writing a line of code.

Custom Middleware Factory#

To load a custom middleware, a class can be passed on the same line

blacksmith.client.middleware_factories =
   mybuilder  my.own.module:MyMiddlewareBuilder

In the example above, the class MyMiddlewareBuilder overrides the class pyramid_blacksmith.AbstractMiddlewareFactoryBuilder.