diff options
Diffstat (limited to 'lib/private/RichObjectStrings/Validator.php')
-rw-r--r-- | lib/private/RichObjectStrings/Validator.php | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/lib/private/RichObjectStrings/Validator.php b/lib/private/RichObjectStrings/Validator.php index 2729b4a3f1b..11d17fef645 100644 --- a/lib/private/RichObjectStrings/Validator.php +++ b/lib/private/RichObjectStrings/Validator.php @@ -22,6 +22,7 @@ namespace OC\RichObjectStrings; +use OCP\RichObjectStrings\Definitions; use OCP\RichObjectStrings\InvalidObjectExeption; use OCP\RichObjectStrings\IValidator; @@ -31,9 +32,9 @@ use OCP\RichObjectStrings\IValidator; * @package OCP\RichObjectStrings * @since 9.2.0 */ -class Validator implements IValidator { +class Validator implements IValidator { - /** @var array[] */ + /** @var Definitions */ protected $definitions; /** @var array[] */ @@ -41,9 +42,11 @@ class Validator implements IValidator { /** * Constructor + * + * @param Definitions $definitions */ - public function __construct() { - $this->definitions = json_decode(file_get_contents(__DIR__ . '/../../public/RichObjectStrings/definitions.json'), true); + public function __construct(Definitions $definitions) { + $this->definitions = $definitions; } /** @@ -76,11 +79,13 @@ class Validator implements IValidator { * @throws InvalidObjectExeption */ protected function validateParameter(array $parameter) { - if (!isset($parameter['type']) || !isset($this->definitions[$parameter['type']])) { + if (!isset($parameter['type'])) { throw new InvalidObjectExeption('Object type is undefined'); } - $requiredParameters = $this->getRequiredParameters($parameter['type']); + $definition = $this->definitions->getDefinition($parameter['type']); + $requiredParameters = $this->getRequiredParameters($parameter['type'], $definition); + $missingKeys = array_diff($requiredParameters, array_keys($parameter)); if (!empty($missingKeys)) { throw new InvalidObjectExeption('Object is invalid'); @@ -89,15 +94,16 @@ class Validator implements IValidator { /** * @param string $type + * @param array $definition * @return string[] */ - protected function getRequiredParameters($type) { + protected function getRequiredParameters($type, array $definition) { if (isset($this->requiredParameters[$type])) { return $this->requiredParameters[$type]; } $this->requiredParameters[$type] = []; - foreach ($this->definitions[$type]['parameters'] as $parameter => $data) { + foreach ($definition['parameters'] as $parameter => $data) { if ($data['required']) { $this->requiredParameters[$type][] = $parameter; } |