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])
| 276 | /// 1. Below or equal to [`Validator::size_limit`] in size. |
| 277 | /// 2. A valid JSON & app data object. |
| 278 | pub fn validate(&self, full_app_data: &[u8]) -> Result<ValidatedAppData> { |
| 279 | if full_app_data.len() > self.size_limit { |
| 280 | return Err(anyhow!( |
| 281 | "app data has byte size {} which is larger than limit {}", |
| 282 | full_app_data.len(), |
| 283 | self.size_limit |
| 284 | )); |
| 285 | } |
| 286 | |
| 287 | let document = String::from_utf8(full_app_data.to_vec())?; |
| 288 | let protocol = parse(full_app_data)?; |
| 289 | |
| 290 | Ok(ValidatedAppData { |
| 291 | hash: AppDataHash(hash_full_app_data(full_app_data)), |
| 292 | document, |
| 293 | protocol, |
| 294 | }) |
| 295 | } |
| 296 | } |
| 297 | |
| 298 | pub fn parse(full_app_data: &[u8]) -> Result<ProtocolAppData, serde_json::Error> { |