public static function validateArchiveListJson($archiveListJson) { if (!self::$retriever) { self::$retriever = new UriRetriever(); } if (!self::$schemaUri) { self::$schemaUri = 'file://' . realpath(__DIR__ . '/archive-schema.json'); } $uri = self::$schemaUri; $schema = self::$retriever->retrieve($uri); $validator = new Validator(); // have to do a encode+decode so that json objects decoded as arrays from Guzzle // are re-encoded as objects instead $validator->check(json_decode(json_encode($archiveListJson)), $schema); if (!$validator->isValid()) { $errors = ""; foreach ($validator->getErrors() as $error) { $errors .= '[' . $error['property'] . '] ' . $error['message'] . "\n"; } throw new InvalidArgumentException('The archiveListJson provided is not valid. Errors:' . $errors . ' archiveListJson:' . print_r($archiveListJson, true)); } }