summaryrefslogtreecommitdiff
path: root/server/vendor/php-opencloud/common/src/Common/JsonSchema/Schema.php
diff options
context:
space:
mode:
authorroot <root@kabir-PC>2016-03-23 11:31:51 +0100
committerroot <root@kabir-PC>2016-03-23 11:31:51 +0100
commita26989103d70fb0dd3ff6834de107cae246778c3 (patch)
tree0f243c83b790ffb57f19261fc2a509131f6776ce /server/vendor/php-opencloud/common/src/Common/JsonSchema/Schema.php
parent1342db60283cb61a1c3810993575d35b9fb33ac0 (diff)
parent6e78d76f887d1149ea85bfb06db7ee7ad7435f5a (diff)
Merge branch 'develop' of https://github.com/manzerbredes/istic-openstack into develop
Diffstat (limited to 'server/vendor/php-opencloud/common/src/Common/JsonSchema/Schema.php')
-rw-r--r--server/vendor/php-opencloud/common/src/Common/JsonSchema/Schema.php72
1 files changed, 72 insertions, 0 deletions
diff --git a/server/vendor/php-opencloud/common/src/Common/JsonSchema/Schema.php b/server/vendor/php-opencloud/common/src/Common/JsonSchema/Schema.php
new file mode 100644
index 0000000..a1cd380
--- /dev/null
+++ b/server/vendor/php-opencloud/common/src/Common/JsonSchema/Schema.php
@@ -0,0 +1,72 @@
+<?php
+
+namespace OpenCloud\Common\JsonSchema;
+
+use JsonSchema\Validator;
+
+class Schema
+{
+ private $body;
+ private $validator;
+
+ public function __construct($body, Validator $validator = null)
+ {
+ $this->body = (object) $body;
+ $this->validator = $validator ?: new Validator();
+ }
+
+ public function getPropertyPaths()
+ {
+ $paths = [];
+
+ foreach ($this->body->properties as $propertyName => $property) {
+ $paths[] = sprintf("/%s", $propertyName);
+ }
+
+ return $paths;
+ }
+
+ public function normalizeObject($subject, array $aliases)
+ {
+ $out = new \stdClass;
+
+ foreach ($this->body->properties as $propertyName => $property) {
+ $name = isset($aliases[$propertyName]) ? $aliases[$propertyName] : $propertyName;
+ if (isset($property->readOnly) && $property->readOnly === true) {
+ continue;
+ } elseif (property_exists($subject, $name)) {
+ $out->$propertyName = $subject->$name;
+ } elseif (property_exists($subject, $propertyName)) {
+ $out->$propertyName = $subject->$propertyName;
+ }
+ }
+
+ return $out;
+ }
+
+ public function validate($data)
+ {
+ $this->validator->check($data, $this->body);
+ }
+
+ public function isValid()
+ {
+ return $this->validator->isValid();
+ }
+
+ public function getErrors()
+ {
+ return $this->validator->getErrors();
+ }
+
+ public function getErrorString()
+ {
+ $msg = "Provided values do not validate. Errors:\n";
+
+ foreach ($this->getErrors() as $error) {
+ $msg .= sprintf("[%s] %s\n", $error['property'], $error['message']);
+ }
+
+ return $msg;
+ }
+}