ic_backup/model/application_ingress/
mod.rs1use crate::model::application_payload::ApplicationPayloadError as Payload;
7mod payload;
8mod request;
9pub use payload::{
10 ApplicationIngressPayload, MAX_APPLICATION_INGRESS_ARGUMENT_BYTES,
11 MAX_APPLICATION_INGRESS_METHOD_BYTES, MAX_APPLICATION_INGRESS_REPLY_BYTES,
12};
13pub use request::{ApplicationMutationRequest, ApplicationObservationRequest};
14
15use crate::model::{ic_observation::IcObservationRequestError, operation_plan::OperationPlanError};
16use thiserror::Error;
17
18#[derive(Debug, Error)]
20pub enum ApplicationIngressError {
21 #[error("invalid application ingress principal")]
23 InvalidPrincipal,
24 #[error("application ingress cannot target the management canister")]
26 ManagementPrincipal,
27 #[error("invalid application ingress method")]
29 InvalidMethod,
30 #[error("application ingress arguments too large")]
32 ArgumentsTooLarge,
33 #[error("invalid application ingress reply limit")]
35 InvalidReplyLimit,
36 #[error("application ingress authority mismatch")]
38 AuthorityMismatch,
39 #[error("application ingress target mismatch")]
41 TargetMismatch,
42 #[error("application ingress payload mismatch")]
44 PayloadMismatch,
45 #[error("application ingress requires a pending mutation")]
47 NoPendingMutation,
48 #[error("application ingress mutation mismatch")]
50 MutationMismatch,
51 #[error("application ingress observation is pending")]
53 ObservationPending,
54 #[error(transparent)]
56 Observation(#[from] IcObservationRequestError),
57 #[error(transparent)]
59 Plan(#[from] OperationPlanError),
60}
61
62#[cfg(test)]
63mod tests;
64
65impl From<crate::model::application_payload::ApplicationPayloadError> for ApplicationIngressError {
66 fn from(error: crate::model::application_payload::ApplicationPayloadError) -> Self {
67 match error {
68 Payload::ArgumentsTooLarge => Self::ArgumentsTooLarge,
69 Payload::InvalidMethod => Self::InvalidMethod,
70 Payload::InvalidPrincipal => Self::InvalidPrincipal,
71 Payload::ManagementPrincipal => Self::ManagementPrincipal,
72 }
73 }
74}