Parses and validates the provided app data bytes, returns the validated Valid app data is considered to be: 1. Below or equal to [`Validator::size_limit`] in size. 2. A valid JSON & app data object.
(&self, full_app_data: &[u8])
| 269 | /// 1. Below or equal to [`Validator::size_limit`] in size. |
| 270 | /// 2. A valid JSON & app data object. |
| 271 | pub fn validate(&self, full_app_data: &[u8]) -> Result<ValidatedAppData> { |
| 272 | if full_app_data.len() > self.size_limit { |
| 273 | return Err(anyhow!( |
| 274 | "app data has byte size {} which is larger than limit {}", |
| 275 | full_app_data.len(), |
| 276 | self.size_limit |
| 277 | )); |
| 278 | } |
| 279 | |
| 280 | let document = String::from_utf8(full_app_data.to_vec())?; |
| 281 | let protocol = parse(full_app_data)?; |
| 282 | |
| 283 | Ok(ValidatedAppData { |
| 284 | hash: AppDataHash(hash_full_app_data(full_app_data)), |
| 285 | document, |
| 286 | protocol, |
| 287 | }) |
| 288 | } |
| 289 | } |
| 290 | |
| 291 | pub fn parse(full_app_data: &[u8]) -> Result<ProtocolAppData, serde_json::Error> { |