protected function injectWebhooksStructure($appContext = false) { $eventsListClass = new DreamCommerceShopAppstoreEvents(); $treeBuilder = new TreeBuilder(); $root = $treeBuilder->root('webhooks'); $events = $eventsListClass->getSupportedWebhooks(); $root->prototype('array')->children()->scalarNode('secret')->isRequired(true)->end()->scalarNode('validator')->defaultValue(sprintf('dream_commerce_shop_appstore.webhook.%s_validator', $appContext ? 'app' : 'global'))->validate()->always(function ($value) { $value = $value[0] == '@' ? substr($value, 1) : $value; return $value; })->end()->end()->arrayNode('events')->prototype('scalar')->validate()->ifNotInArray($events)->thenInvalid('Invalid webhook event "%s"')->end()->end()->end()->end()->beforeNormalization()->ifString()->then(function ($value) use($events) { return ['validator' => $value, 'secret' => '', 'events' => $events]; })->end()->end()->end(); return $root; }
public function isEventSupported($event) { $events = new DreamCommerceShopAppstoreEvents(); return in_array($event, $events->getSupportedWebhooks()) && in_array($event, $this->events); }