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.