mx_message/
document.rs

1// Plasmatic MX Message Parsing Library
2// https://github.com/GoPlasmatic/MXMessage
3//
4// Copyright (c) 2025 Plasmatic
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9//     http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16//
17// You may obtain a copy of this library at
18// https://github.com/GoPlasmatic/MXMessage
19
20use crate::common::ValidationError;
21use crate::pacs_008_001_08::*;
22use serde::{Deserialize, Serialize};
23
24#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)]
25pub enum Document {
26    #[serde(rename = "FIToFICstmrCdtTrf")]
27    FIToFICustomerCreditTransferV08(Box<FIToFICustomerCreditTransferV08>),
28
29    #[default]
30    UNKNOWN,
31}
32
33impl Document {
34    pub fn validate(&self) -> Result<(), ValidationError> {
35        match self {
36            Document::FIToFICustomerCreditTransferV08(value) => value.validate(),
37            Document::UNKNOWN => {
38                // Return an error for the UNKNOWN case
39                Err(ValidationError::new(
40                    9999,
41                    "Unknown document type".to_string(),
42                ))
43            }
44        }
45    }
46}