diff options
Diffstat (limited to 'library/Director/RestApi/RestApiParams.php')
-rw-r--r-- | library/Director/RestApi/RestApiParams.php | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/library/Director/RestApi/RestApiParams.php b/library/Director/RestApi/RestApiParams.php new file mode 100644 index 0000000..c237ac5 --- /dev/null +++ b/library/Director/RestApi/RestApiParams.php @@ -0,0 +1,29 @@ +<?php + +namespace Icinga\Module\Director\RestApi; + +use Icinga\Module\Director\Data\Exporter; +use Icinga\Web\Request; +use InvalidArgumentException; + +class RestApiParams +{ + public static function applyParamsToExporter(Exporter $exporter, Request $request, $shortObjectType = null) + { + $params = $request->getUrl()->getParams(); + $resolved = (bool) $params->get('resolved', false); + $withNull = $params->shift('withNull'); + if ($params->get('withServices')) { + if ($shortObjectType !== 'host') { + throw new InvalidArgumentException('withServices is available for Hosts only'); + } + $exporter->enableHostServices(); + } + $properties = $params->shift('properties'); + if ($properties !== null && strlen($properties)) { + $exporter->filterProperties(preg_split('/\s*,\s*/', $properties, -1, PREG_SPLIT_NO_EMPTY)); + } + $exporter->resolveObjects($resolved); + $exporter->showDefaults($withNull); + } +} |