summaryrefslogtreecommitdiffstats
path: root/application/controllers/ImportsourcesController.php
diff options
context:
space:
mode:
Diffstat (limited to 'application/controllers/ImportsourcesController.php')
-rw-r--r--application/controllers/ImportsourcesController.php57
1 files changed, 57 insertions, 0 deletions
diff --git a/application/controllers/ImportsourcesController.php b/application/controllers/ImportsourcesController.php
new file mode 100644
index 0000000..4287292
--- /dev/null
+++ b/application/controllers/ImportsourcesController.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace Icinga\Module\Director\Controllers;
+
+use Icinga\Module\Director\DirectorObject\Automation\ImportExport;
+use Icinga\Module\Director\Web\Table\ImportsourceTable;
+use Icinga\Module\Director\Web\Controller\ActionController;
+use Icinga\Module\Director\Web\Tabs\ImportTabs;
+
+class ImportsourcesController extends ActionController
+{
+ protected $isApified = true;
+
+ public function indexAction()
+ {
+ if ($this->getRequest()->isApiRequest()) {
+ switch (strtolower($this->getRequest()->getMethod())) {
+ case 'get':
+ $this->sendExport();
+ break;
+ case 'post':
+ $this->acceptImport($this->getRequest()->getRawBody());
+ break;
+ // TODO: put / replace all?
+ default:
+ $this->sendUnsupportedMethod();
+ }
+
+ return;
+ }
+
+ $this->addTitle($this->translate('Import source'))
+ ->setAutoRefreshInterval(10)
+ ->addAddLink(
+ $this->translate('Add a new Import Source'),
+ 'director/importsource/add'
+ )->tabs(new ImportTabs())->activate('importsource');
+
+ (new ImportsourceTable($this->db()))->renderTo($this);
+ }
+
+ /**
+ * @param $raw
+ */
+ protected function acceptImport($raw)
+ {
+ (new ImportExport($this->db()))->unserializeImportSources(json_decode($raw));
+ }
+
+ protected function sendExport()
+ {
+ $this->sendJson(
+ $this->getResponse(),
+ (new ImportExport($this->db()))->serializeAllImportSources()
+ );
+ }
+}