/** * @param ServiceEvent $event */ public function onServiceRequest(ServiceEvent $event) { /** @var Service $service */ $service = $event->getService(); if (!$service instanceof ServiceConfigurableInterface) { return; } if ($serviceConfig = $this->repository->findOneByServiceKey($service->getIdentifier())) { // Inject service configuration & client configuration $service->configure(array_merge($service->getOptions(), $serviceConfig->toOptions())); $service->getClient()->setNormalizedOptions(array_merge($service->getClient()->getOptions(), $serviceConfig->getClientConfig()->toOptions())); } }
/** * @param string $key * * @return \Itkg\ConsumerBundle\Document\ServiceConfig */ public function findServiceConfig($key) { $config = $this->repository->findOneByServiceKey($key); if (null === $config) { $service = $this->findService($key); $config = $this->createNewServiceConfig(); $config->fromOptions($service->getOptions()); $config->getClientConfig()->fromOptions($service->getClient()->getNormalizedOptions()); $config->setServiceKey($key); } return $config; }