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}