/**
  * {@inheritDoc}
  *
  * Overwrite mongodb config from parent in cloud case.
  *
  * @param ContainerBuilder $container instance
  *
  * @return void
  */
 public function prepend(ContainerBuilder $container)
 {
     parent::prepend($container);
     /** [nue]
      * this is a workaround for a current symfony bug:
      * https://github.com/symfony/symfony/issues/7555
      *
      * we *want* to be able to override any param with our env variables..
      * so we do again, what the kernel did already here.. ;-)
      *
      * @todo move this out of file bundle as it is much more global
      * @todo add proper documentation on this "feature" to a README
      */
     foreach ($_SERVER as $key => $value) {
         if (0 === strpos($key, 'SYMFONY__')) {
             $container->setParameter(strtolower(str_replace('__', '.', substr($key, 9))), $value);
         }
     }
     // grab mongo config directly from vcap...
     $services = getenv('VCAP_SERVICES');
     if (!empty($services)) {
         $services = json_decode($services, true);
         $mongo = $services['mongodb-2.2'][0]['credentials'];
         $container->setParameter('mongodb.default.server.uri', $mongo['url']);
         $container->setParameter('mongodb.default.server.db', $mongo['db']);
     } else {
         $container->setParameter('mongodb.default.server.uri', $container->getParameter('graviton.mongodb.default.server.uri'));
         $container->setParameter('mongodb.default.server.db', $container->getParameter('graviton.mongodb.default.server.db'));
     }
 }
 /**
  * {@inheritDoc}
  *
  * @param array            $configs   configs to load
  * @param ContainerBuilder $container builder used to load
  *
  * @return void
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     parent::load($configs, $container);
     // define alias for the strategy to extract the authentication key from the Airlock request.
     $container->setAlias('graviton.security.authentication.strategy', $container->getParameter('graviton.security.authentication.strategy'));
     $container->setAlias('graviton.security.authentication.dynamic.model', $container->getParameter('graviton.security.authentication.provider.model'));
 }
 /**
  * @param array            $configs   parameters configuration
  * @param ContainerBuilder $container Symfony container
  * @return void
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     parent::load($configs, $container);
     $configuration = new Configuration();
     $this->processConfiguration($configuration, $configs);
     $container->setParameter('graviton.core.links', $configs[0]['service_name']);
     $container->setParameter('graviton.core.main.path.whitelist', $configs[0]['uri_whitelist']);
 }
 /**
  * Overwrite S3 config from cloud if available
  *
  * @param ContainerBuilder $container instance
  *
  * @return void
  */
 public function prepend(ContainerBuilder $container)
 {
     parent::prepend($container);
     // populated from cf's VCAP_SERVICES variable
     $services = getenv('VCAP_SERVICES');
     if (!empty($services)) {
         $services = json_decode($services, true);
         $creds = $services['atmoss3'][0]['credentials'];
         $container->setParameter('graviton.file.gaufrette.backend', 's3');
         $container->setParameter('graviton.aws_s3.client.endpoint', sprintf('https://%s', $creds['accessHost']));
         $container->setParameter('graviton.aws_s3.client.key', $creds['accessKey']);
         $container->setParameter('graviton.aws_s3.client.secret', $creds['sharedSecret']);
         $container->setParameter('graviton.aws_s3.bucket_name', $services['atmoss3'][0]['name']);
     } else {
         $container->setParameter('graviton.file.gaufrette.backend', $container->getParameter('graviton.file.backend'));
         $container->setParameter('graviton.aws_s3.client.endpoint', $container->getParameter('graviton.file.s3.endpoint'));
         $container->setParameter('graviton.aws_s3.client.key', $container->getParameter('graviton.file.s3.key'));
         $container->setParameter('graviton.aws_s3.client.secret', $container->getParameter('graviton.file.s3.secret'));
         $container->setParameter('graviton.aws_s3.bucket_name', $container->getParameter('graviton.file.s3.bucket_name'));
     }
 }
 /**
  * {@inheritDoc}
  *
  * Overwrite mongodb config from parent in cloud case.
  *
  * @param ContainerBuilder $container instance
  *
  * @return void
  */
 public function prepend(ContainerBuilder $container)
 {
     parent::prepend($container);
     /** [nue]
      * this is a workaround for a new symfony feature:
      * https://github.com/symfony/symfony/issues/7555
      *
      * we *need* to be able to override any param with our env variables..
      * so we do again, what the kernel did already here.. ;-)
      *
      * Since fabpot seems to have said bye to this feature we are
      * re-implementing it here. We are also adding some fancy json
      * parsing for hashes and arrays while at it.
      *
      * @todo move this out of file bundle as it is much more global
      * @todo add proper documentation on this "feature" to a README
      */
     foreach ($_SERVER as $key => $value) {
         if (0 === strpos($key, 'SYMFONY__')) {
             if (substr($value, 0, 1) == '[' || substr($value, 0, 1) == '{') {
                 $value = json_decode($value, true);
                 if (JSON_ERROR_NONE !== json_last_error()) {
                     throw new \RuntimeException(sprintf('error "%s" in env variable "%s"', json_last_error_msg(), $key));
                 }
             }
             $container->setParameter(strtolower(str_replace('__', '.', substr($key, 9))), $value);
         }
     }
     // grab mongo config directly from vcap...
     $services = getenv('VCAP_SERVICES');
     if (!empty($services)) {
         $services = json_decode($services, true);
         $mongo = $services['mongodb'][0]['credentials'];
         $container->setParameter('mongodb.default.server.uri', $mongo['uri']);
         $container->setParameter('mongodb.default.server.db', $mongo['database']);
     } else {
         $container->setParameter('mongodb.default.server.uri', $container->getParameter('graviton.mongodb.default.server.uri'));
         $container->setParameter('mongodb.default.server.db', $container->getParameter('graviton.mongodb.default.server.db'));
     }
 }
 /**
  * Overwrite rabbitmq config from cloud if available
  *
  * @param ContainerBuilder $container instance
  *
  * @return void
  */
 public function prepend(ContainerBuilder $container)
 {
     parent::prepend($container);
     // populated from cf's VCAP_SERVICES variable
     $services = getenv('VCAP_SERVICES');
     if (!empty($services)) {
         $services = json_decode($services, true);
         if (!isset($services['rabbitmq'][0]['credentials'])) {
             return false;
         }
         $creds = $services['rabbitmq'][0]['credentials'];
         $container->setParameter('rabbitmq.host', $creds['host']);
         $container->setParameter('rabbitmq.port', $creds['port']);
         $container->setParameter('rabbitmq.user', $creds['username']);
         $container->setParameter('rabbitmq.password', $creds['password']);
         $container->setParameter('rabbitmq.vhost', $creds['vhost']);
     } else {
         $container->setParameter('rabbitmq.host', $container->getParameter('graviton.rabbitmq.host'));
         $container->setParameter('rabbitmq.port', $container->getParameter('graviton.rabbitmq.port'));
         $container->setParameter('rabbitmq.user', $container->getParameter('graviton.rabbitmq.user'));
         $container->setParameter('rabbitmq.password', $container->getParameter('graviton.rabbitmq.password'));
         $container->setParameter('rabbitmq.vhost', $container->getParameter('graviton.rabbitmq.vhost'));
     }
 }
 /**
  * Loads current configuration.
  *
  * @param array            $configs   Set of configuration options
  * @param ContainerBuilder $container Instance of the SF2 container
  *
  * @return void
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     parent::load($configs, $container);
     $configs = $this->processConfiguration(new Configuration(), $configs);
     $container->setParameter('graviton.proxy.sources', $configs['sources']);
 }