identity_credential/validator/jwt_presentation_validation/
error.rs

1// Copyright 2020-2023 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4use std::error::Error;
5use std::fmt::Display;
6
7use crate::validator::jwt_credential_validation::JwtValidationError;
8
9/// Errors caused by a failure to validate a [`Presentation`](crate::presentation::Presentation).
10#[derive(Debug)]
11pub struct CompoundJwtPresentationValidationError {
12  /// Errors that occurred during validation of the presentation.
13  pub presentation_validation_errors: Vec<JwtValidationError>,
14}
15
16impl CompoundJwtPresentationValidationError {
17  pub(crate) fn one_presentation_error(error: JwtValidationError) -> Self {
18    Self {
19      presentation_validation_errors: vec![error],
20    }
21  }
22}
23
24impl Display for CompoundJwtPresentationValidationError {
25  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
26    let error_string_iter = self
27      .presentation_validation_errors
28      .iter()
29      .map(|error| error.to_string());
30
31    let detailed_information: String = itertools::intersperse(error_string_iter, "; ".to_string()).collect();
32    write!(f, "[{detailed_information}]")
33  }
34}
35
36impl Error for CompoundJwtPresentationValidationError {}