@@ -24,6 +24,39 @@ def printPath(pathObj, fields):
2424 path += '/[{}]' .format (fields )
2525 return path
2626
27+ def create_snippet (data ):
28+ # Take possibly a large JSON document and only show the fields at the current level
29+ for key in data :
30+ if isinstance (data [key ], list ):
31+ data [key ] = '[ ... ]'
32+ elif isinstance (data [key ], dict ):
33+ data [key ] = '{ ... }'
34+
35+ return data
36+
37+ def convertValidationError (err , errorCount , total ):
38+ detail = ''
39+ if 'title' in err .schema :
40+ detail = err .schema ['title' ]
41+ description = ''
42+ if 'description' in err .schema :
43+ detail += ' ' + err .schema ['description' ]
44+ context = err .instance
45+ if isinstance (context , dict ):
46+ for key in context :
47+ if isinstance (context [key ], list ):
48+ context [key ] = '[ ... ]'
49+ elif isinstance (context [key ], dict ):
50+ context [key ] = '{ ... }'
51+
52+ return ErrorDetail (
53+ f"Error { errorCount } of { total } .\n Message: { err .message } " ,
54+ detail ,
55+ description ,
56+ printPath (err .path , err .message ),
57+ context ,
58+ err )
59+
2760def validate (data , version , url ):
2861 if version == IIIFVersion .V3_0 :
2962 with open (f'{ SCHEMA_DIR } /iiif_3_0.json' ) as json_file :
@@ -90,31 +123,12 @@ def validate(data, version, url):
90123 if errorPath not in seen_titles :
91124 errors .append (errorDup )
92125 seen_titles .add (errorPath )
126+
93127 errorCount = 1
94128 # Now create some useful messsages to pass on
95129 for err in errors :
96- detail = ''
97- if 'title' in err .schema :
98- detail = err .schema ['title' ]
99- description = ''
100- if 'description' in err .schema :
101- detail += ' ' + err .schema ['description' ]
102- context = err .instance
103- if isinstance (context , dict ):
104- for key in context :
105- if isinstance (context [key ], list ):
106- context [key ] = '[ ... ]'
107- elif isinstance (context [key ], dict ):
108- context [key ] = '{ ... }'
109-
110- result .errorList .append (ErrorDetail (
111- 'Error {} of {}.\n Message: {}' .format (errorCount , len (errors ), err .message ),
112- detail ,
113- description ,
114- printPath (err .path , err .message ),
115- context ,
116- err ))
117- #print (json.dumps(err.instance, indent=4))
130+ result .errorList .append (convertValidationError (err , errorCount , len (errors )))
131+
118132 errorCount += 1
119133
120134 # Return:
0 commit comments