/** * @param array $data * @return mixed|void */ public function create(array $data) { $result = $this->validateConnectorData($data); if ($result instanceof ApiProblemResponse) { return $result; } $data = FileGatewayTranslator::translateFromClient($data); $id = FileGatewayTranslator::generateConnectorId(); $this->commandBus->dispatch(AddConnectorToConfig::fromDefinition($id, $data['name'], $data['allowed_messages'], $data['allowed_types'], $this->systemConfig->getConfigLocation(), ['metadata' => $data['metadata'], 'ui_metadata_riot_tag' => self::UI_METADATA_RIOT_TAG, 'icon' => self::ICON, 'icon_type' => self::ICON_TYPE, 'node_name' => $this->systemConfig->getNodeName()])); $data = FileGatewayTranslator::translateToClient($data); $data['id'] = $id; return $data; }
/** * @param string $id * @param array $connector * @throws \InvalidArgumentException */ public function addConnector($id, array $connector) { $this->assertConnector($connector); if (!$this->dbalConnections->containsKey($connector['dbal_connection'])) { throw new \InvalidArgumentException(sprintf("Dbal connection %s for connector %s does not exists", $connector['dbal_connection'], $connector['name'])); } $connection = $this->dbalConnections->get($connector['dbal_connection']); $generatedTypes = $this->generateProcessingTypesIfNotExist($connection->config()['dbname'], $connector['table'], $connection->connection()); $connectorName = $connector['name']; unset($connector['name']); $connector['icon'] = self::ICON; $connector['icon_type'] = self::ICON_TYPE; $connector['ui_metadata_riot_tag'] = self::METADATA_UI_KEY; $connector['node_name'] = $this->processingConfig->getNodeName(); $addConnector = AddConnectorToConfig::fromDefinition($id, $connectorName, [MessageNameUtils::COLLECT_DATA, MessageNameUtils::PROCESS_DATA], $generatedTypes, $this->configLocation, $connector); $this->commandBus->dispatch($addConnector); }
/** * @param MessageHandler $messageHandler */ private function syncMessageHandler(MessageHandler $messageHandler) { $additionalData = $messageHandler->additionalData(); if ($messageHandler->preferredProcessingType()) { $additionalData['preferred_type'] = $messageHandler->preferredProcessingType()->of(); } $additionalData['node_name'] = $messageHandler->processingNodeName()->toString(); $additionalData['icon'] = $messageHandler->icon(); $additionalData['icon_type'] = $messageHandler->iconType(); $additionalData['metadata'] = $messageHandler->processingMetadata()->toArray(); $additionalData['ui_metadata_riot_tag'] = $messageHandler->metadataRiotTag(); $allowedTypes = $messageHandler->supportedProcessingTypes()->areAllTypesSupported() ? MessageHandler\ProcessingTypes::SUPPORT_ALL : $messageHandler->supportedProcessingTypes()->typeList(); if ($messageHandler->isKnownInProcessingSystem()) { $this->commandBus->dispatch(ChangeConnectorConfig::ofConnector($messageHandler->processingId()->toString(), array_merge(['name' => $messageHandler->name(), 'allowed_messages' => $this->determineAllowedMessages($messageHandler), 'allowed_types' => $allowedTypes], $additionalData), $this->processingConfigLocation)); } else { $this->commandBus->dispatch(AddConnectorToConfig::fromDefinition($messageHandler->processingId()->toString(), $messageHandler->name(), $this->determineAllowedMessages($messageHandler), $allowedTypes, $this->processingConfigLocation, $additionalData)); } }