dpp/validation/json_schema_validator/
mod.rs1pub mod methods;
2
3use crate::data_contract::JsonValue;
4use crate::validation::{DataValidator, SimpleConsensusValidationResult};
5use anyhow::Context;
6use jsonschema::JSONSchema;
7use platform_version::version::PlatformVersion;
8use std::sync::RwLock;
9
10#[derive(Debug)]
11pub struct JsonSchemaValidator {
12 validator: RwLock<Option<JSONSchema>>,
13}
14
15impl DataValidator for JsonSchemaValidator {
17 type Item = JsonValue;
18 fn validate(
19 &self,
20 data: &Self::Item,
21 platform_version: &PlatformVersion,
22 ) -> Result<SimpleConsensusValidationResult, crate::ProtocolError> {
23 let result = self
24 .validate(data, platform_version)
25 .context("error during validating json schema")?;
26 Ok(result)
27 }
28}