summaryrefslogtreecommitdiff
path: root/server/vendor/php-opencloud/common/src/Common/JsonSchema/Schema.php
diff options
context:
space:
mode:
authorEoleDev <root@serverpc.home>2016-03-09 16:17:33 +0100
committerEoleDev <root@serverpc.home>2016-03-09 16:17:33 +0100
commit2b8decb81faeb7928bcbfda84c6f33a003f707fd (patch)
tree0e491d7ae2bf91347b1cf50d2c475625d8f659b4 /server/vendor/php-opencloud/common/src/Common/JsonSchema/Schema.php
parentb7ebe1272c1127df290535af2430622b28160bb0 (diff)
parent03ef74d0cfe675a6e18a91f039182ca1b248d8f5 (diff)
Maj Library
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;
+ }
+}