middlewareIds = $middleware_ids; $this->container = $container; } /** * Ensures that the middlewares are initialized. */ protected function initializeMiddlewares() { if (!isset($this->middlewares)) { $this->middlewares = []; foreach ($this->middlewareIds as $middleware_id) { $middleware = $this->container->get($middleware_id); if (is_callable($middleware)) { $this->middlewares[$middleware_id] = $middleware(); } else { throw new \InvalidArgumentException('Middlewares need to implement __invoke, see https://guzzle.readthedocs.org/en/latest/handlers-and-middleware.html for more information about middlewares.'); } } } } /** * Configures the stack using services tagged as http_client_middleware. * * @param \GuzzleHttp\HandlerStack $handler_stack * The handler stack */ public function configure(HandlerStack $handler_stack) { $this->initializeMiddlewares(); foreach ($this->middlewares as $middleware_id => $middleware) { $handler_stack->push($middleware, $middleware_id); } } }