Example #1
0
 public function buildServer()
 {
     $server = new Server("SlackBot", "0.1");
     $server->post('/playbook/run/', function (Request $request, Response $response, $next) {
         $rawData = $request->getData();
         $postParser = Registry::get('container')['post_parser'];
         $parsedData = $postParser->parse($rawData);
         $playbook = urldecode($parsedData['playbook']);
         $yamlParser = Registry::get('container')['yaml_parser'];
         $playbook = $yamlParser->parse($playbook);
         /** @var SlackApi $slackApi */
         $slackApi = Registry::get('container')['slack_api'];
         $playbookToken = Ar::get($playbook, 'auth.token');
         $oldToken = null;
         if (null !== $playbookToken) {
             $oldToken = $slackApi->getToken();
             $slackApi->setToken($playbookToken);
         }
         $executor = new PlaybookExecutor(Registry::get('container')['core_processor']);
         Variables::clear();
         $executor->execute($playbook);
         $response->write('Playbook executed successfully');
         $response->end();
         if (null !== $playbookToken) {
             $slackApi->setToken($oldToken);
         }
         $fileName = basename($parsedData['filename']);
         echo '[INFO] Executing playbook file ' . $fileName . "\n";
         $next();
     });
     $server->post('/command/run/', function (Request $request, Response $response, $next) {
         $rawData = $request->getData();
         $postParser = Registry::get('container')['post_parser'];
         $parsedData = $postParser->parse($rawData);
         $command = urldecode($parsedData['command']);
         $coreProcessor = Registry::get('container')['core_processor'];
         $dto = new RequestDto();
         $dto->setData(['type' => 'message', 'channel' => 'cron', 'user' => 'cron', 'text' => $command, 'ts' => time()]);
         $coreProcessor->processCommand($dto);
         $response->write('Playbook executed successfully');
         $response->end();
         echo '[INFO] Executing command ' . $command . "\n";
         $next();
     });
     $server->post('/process/message/', function (Request $request, Response $response, $next) {
         $response->sendHeaders();
         $response->writeJson(['ok' => true]);
         $response->end();
         $rawData = $request->getData();
         $postParser = Registry::get('container')['post_parser'];
         $parsedData = $postParser->parse($rawData);
         /** @var CoreProcessor $coreProcessor */
         $coreProcessor = Registry::get('container')['core_processor'];
         $dto = new RequestDto();
         $dto->setSource('rtm');
         $dto->setData(json_decode(Ar::get($parsedData, 'message'), true));
         $coreProcessor->process($dto);
         $next();
     });
     $server->get('/info/cron/', function (Request $request, Response $response, $next) {
         $response->writeJson(Registry::get('container')['config']->getSection('cron'));
         $response->end();
         $next();
     });
     return $server;
 }