コード例 #1
0
 public function create($data)
 {
     if (!array_key_exists("collect_data_trigger", $data)) {
         return new ApiProblemResponse(new ApiProblem(422, 'Root key collect_data_trigger missing in request data'));
     }
     $data = $data["collect_data_trigger"];
     if (!array_key_exists('processing_type', $data)) {
         return new ApiProblemResponse(new ApiProblem(422, 'Key processing_type is missing'));
     }
     $processingType = $data['processing_type'];
     if (!class_exists($processingType)) {
         return new ApiProblemResponse(new ApiProblem(422, 'Provided processing type is unknown'));
     }
     try {
         Assertion::implementsInterface($processingType, 'Prooph\\Processing\\Type\\Type');
     } catch (\InvalidArgumentException $ex) {
         return new ApiProblemResponse(new ApiProblem(422, 'Provided processing type is not valid'));
     }
     $wfMessage = WorkflowMessage::collectDataOf($processingType::prototype(), __CLASS__, $this->ProcessingConfig->getNodeName());
     $this->messageLogger->logIncomingMessage($wfMessage);
     $this->workflowEngine->dispatch($wfMessage);
     /** @var $response Response */
     $response = $this->getResponse();
     $response->getHeaders()->addHeaderLine('Location', $this->url()->fromRoute('prooph.link/processor_proxy/api/messages', ['id' => $wfMessage->uuid()->toString()]));
     $response->setStatusCode(201);
     return $response;
 }
コード例 #2
0
 /**
  * @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;
 }
コード例 #3
0
 /**
  * @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);
 }