use crate::{
model::{
attempt_journal::AttemptJournalRecord, ic_observation::IcObservationResponse,
ic_snapshot_upload_observation::IcSnapshotUploadObservationRequest,
},
policy::ic_observation::{
IcObservationAssociationError, IcObservationResponseView, ObservationAssociation,
validate_association,
},
};
pub fn validate_response<'a>(
request: &IcSnapshotUploadObservationRequest<'a, '_>,
journal: &AttemptJournalRecord,
response: &'a IcObservationResponse,
) -> Result<IcObservationResponseView<'a>, IcObservationAssociationError> {
request.validate_journal(journal)?;
validate_association(
&ObservationAssociation {
authority: request.authority(),
mutation_attempt: request.mutation_attempt(),
observation_attempt: request.observation_attempt(),
payload: request.payload(),
context: request.plan().context(),
},
response,
)
}
mod settlement;
pub use settlement::{
IcSnapshotUploadSettlementError, IcSnapshotUploadSettlementView, validate_settlement,
};
#[cfg(test)]
mod tests;