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 serde::{Deserialize, Serialize};
21use crate::pacs_008_001_13::*;
22use crate::common::ValidationError;
23
24#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)]
25pub enum Document {
26	#[serde(rename = "FIToFICstmrCdtTrf")]
27	FIToFICustomerCreditTransferV13(Box<FIToFICustomerCreditTransferV13>),
28
29	#[default]
30	UNKNOWN,
31}
32
33impl Document {
34    pub fn validate(&self) -> Result<(), ValidationError> {
35        match self {
36			Document::FIToFICustomerCreditTransferV13(value) => value.validate(),
37			Document::UNKNOWN => {
38                // Return an error for the UNKNOWN case
39                Err(ValidationError::new(9999, "Unknown document type".to_string()))
40            }
41        }
42    }
43}