From 66bfe98c1401502ed47c56a704846fa03fc4848f Mon Sep 17 00:00:00 2001 From: James Muscat Date: Wed, 17 Dec 2014 14:18:58 +0000 Subject: [PATCH] Validate against draft Commodity schema. --- schemas/commodity-v0.1.json | 5 +++++ src/eddn/Validator.py | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/schemas/commodity-v0.1.json b/schemas/commodity-v0.1.json index 4bb1f4a..98f89d1 100644 --- a/schemas/commodity-v0.1.json +++ b/schemas/commodity-v0.1.json @@ -4,6 +4,11 @@ "type": "object", "additionalProperties": false, "properties": { + "$schemaRef": { + "id": "#$schemaRef", + "type": "string", + "additionalProperties": false + }, "header": { "id": "#header", "type": "object", diff --git a/src/eddn/Validator.py b/src/eddn/Validator.py index 2b58294..338aa04 100644 --- a/src/eddn/Validator.py +++ b/src/eddn/Validator.py @@ -1,5 +1,6 @@ import simplejson from enum import IntEnum +from jsonschema import validate as jsValidate, ValidationError class Validator(object): @@ -23,6 +24,13 @@ class Validator(object): if schemaRef not in self.schemas.keys(): # We don't want to go out to the Internet and retrieve unknown schemas. results.add(ValidationSeverity.FATAL, JsonValidationException("Schema " + schemaRef + " is unknown, unable to validate.")) + return results + + schema = self.schemas[schemaRef] + try: + jsValidate(json_object, schema) + except ValidationError as e: + results.add(ValidationSeverity.ERROR, e) return results