1use crate::{ValidationResult, messages::*, swift_message::SwiftMessage};
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(tag = "mt_type")]
9pub enum ParsedSwiftMessage {
10 #[serde(rename = "101")]
11 MT101(Box<SwiftMessage<MT101>>),
12 #[serde(rename = "103")]
13 MT103(Box<SwiftMessage<MT103>>),
14 #[serde(rename = "104")]
15 MT104(Box<SwiftMessage<MT104>>),
16 #[serde(rename = "107")]
17 MT107(Box<SwiftMessage<MT107>>),
18 #[serde(rename = "110")]
19 MT110(Box<SwiftMessage<MT110>>),
20 #[serde(rename = "111")]
21 MT111(Box<SwiftMessage<MT111>>),
22 #[serde(rename = "112")]
23 MT112(Box<SwiftMessage<MT112>>),
24 #[serde(rename = "190")]
25 MT190(Box<SwiftMessage<MT190>>),
26 #[serde(rename = "200")]
27 MT200(Box<SwiftMessage<MT200>>),
28 #[serde(rename = "202")]
29 MT202(Box<SwiftMessage<MT202>>),
30 #[serde(rename = "204")]
31 MT204(Box<SwiftMessage<MT204>>),
32 #[serde(rename = "205")]
33 MT205(Box<SwiftMessage<MT205>>),
34 #[serde(rename = "210")]
35 MT210(Box<SwiftMessage<MT210>>),
36 #[serde(rename = "290")]
37 MT290(Box<SwiftMessage<MT290>>),
38 #[serde(rename = "900")]
39 MT900(Box<SwiftMessage<MT900>>),
40 #[serde(rename = "910")]
41 MT910(Box<SwiftMessage<MT910>>),
42 #[serde(rename = "920")]
43 MT920(Box<SwiftMessage<MT920>>),
44 #[serde(rename = "935")]
45 MT935(Box<SwiftMessage<MT935>>),
46 #[serde(rename = "940")]
47 MT940(Box<SwiftMessage<MT940>>),
48 #[serde(rename = "941")]
49 MT941(Box<SwiftMessage<MT941>>),
50 #[serde(rename = "942")]
51 MT942(Box<SwiftMessage<MT942>>),
52 #[serde(rename = "950")]
53 MT950(Box<SwiftMessage<MT950>>),
54 #[serde(rename = "192")]
55 MT192(Box<SwiftMessage<MT192>>),
56 #[serde(rename = "196")]
57 MT196(Box<SwiftMessage<MT196>>),
58 #[serde(rename = "292")]
59 MT292(Box<SwiftMessage<MT292>>),
60 #[serde(rename = "296")]
61 MT296(Box<SwiftMessage<MT296>>),
62 #[serde(rename = "199")]
63 MT199(Box<SwiftMessage<MT199>>),
64 #[serde(rename = "299")]
65 MT299(Box<SwiftMessage<MT299>>),
66}
67
68impl ParsedSwiftMessage {
69 pub fn message_type(&self) -> &'static str {
71 match self {
72 ParsedSwiftMessage::MT101(_) => "101",
73 ParsedSwiftMessage::MT103(_) => "103",
74 ParsedSwiftMessage::MT104(_) => "104",
75 ParsedSwiftMessage::MT107(_) => "107",
76 ParsedSwiftMessage::MT110(_) => "110",
77 ParsedSwiftMessage::MT111(_) => "111",
78 ParsedSwiftMessage::MT112(_) => "112",
79 ParsedSwiftMessage::MT190(_) => "190",
80 ParsedSwiftMessage::MT200(_) => "200",
81 ParsedSwiftMessage::MT202(_) => "202",
82 ParsedSwiftMessage::MT204(_) => "204",
83 ParsedSwiftMessage::MT205(_) => "205",
84 ParsedSwiftMessage::MT210(_) => "210",
85 ParsedSwiftMessage::MT290(_) => "290",
86 ParsedSwiftMessage::MT900(_) => "900",
87 ParsedSwiftMessage::MT910(_) => "910",
88 ParsedSwiftMessage::MT920(_) => "920",
89 ParsedSwiftMessage::MT935(_) => "935",
90 ParsedSwiftMessage::MT940(_) => "940",
91 ParsedSwiftMessage::MT941(_) => "941",
92 ParsedSwiftMessage::MT942(_) => "942",
93 ParsedSwiftMessage::MT950(_) => "950",
94 ParsedSwiftMessage::MT192(_) => "192",
95 ParsedSwiftMessage::MT196(_) => "196",
96 ParsedSwiftMessage::MT292(_) => "292",
97 ParsedSwiftMessage::MT296(_) => "296",
98 ParsedSwiftMessage::MT199(_) => "199",
99 ParsedSwiftMessage::MT299(_) => "299",
100 }
101 }
102
103 pub fn as_mt101(&self) -> Option<&SwiftMessage<MT101>> {
105 match self {
106 ParsedSwiftMessage::MT101(msg) => Some(msg),
107 _ => None,
108 }
109 }
110 pub fn as_mt103(&self) -> Option<&SwiftMessage<MT103>> {
111 match self {
112 ParsedSwiftMessage::MT103(msg) => Some(msg),
113 _ => None,
114 }
115 }
116 pub fn as_mt104(&self) -> Option<&SwiftMessage<MT104>> {
117 match self {
118 ParsedSwiftMessage::MT104(msg) => Some(msg),
119 _ => None,
120 }
121 }
122 pub fn as_mt107(&self) -> Option<&SwiftMessage<MT107>> {
123 match self {
124 ParsedSwiftMessage::MT107(msg) => Some(msg),
125 _ => None,
126 }
127 }
128 pub fn as_mt110(&self) -> Option<&SwiftMessage<MT110>> {
129 match self {
130 ParsedSwiftMessage::MT110(msg) => Some(msg),
131 _ => None,
132 }
133 }
134 pub fn as_mt111(&self) -> Option<&SwiftMessage<MT111>> {
135 match self {
136 ParsedSwiftMessage::MT111(msg) => Some(msg),
137 _ => None,
138 }
139 }
140 pub fn as_mt112(&self) -> Option<&SwiftMessage<MT112>> {
141 match self {
142 ParsedSwiftMessage::MT112(msg) => Some(msg),
143 _ => None,
144 }
145 }
146 pub fn as_mt190(&self) -> Option<&SwiftMessage<MT190>> {
147 match self {
148 ParsedSwiftMessage::MT190(msg) => Some(msg),
149 _ => None,
150 }
151 }
152 pub fn as_mt200(&self) -> Option<&SwiftMessage<MT200>> {
153 match self {
154 ParsedSwiftMessage::MT200(msg) => Some(msg),
155 _ => None,
156 }
157 }
158 pub fn as_mt202(&self) -> Option<&SwiftMessage<MT202>> {
159 match self {
160 ParsedSwiftMessage::MT202(msg) => Some(msg),
161 _ => None,
162 }
163 }
164 pub fn as_mt204(&self) -> Option<&SwiftMessage<MT204>> {
165 match self {
166 ParsedSwiftMessage::MT204(msg) => Some(msg),
167 _ => None,
168 }
169 }
170 pub fn as_mt205(&self) -> Option<&SwiftMessage<MT205>> {
171 match self {
172 ParsedSwiftMessage::MT205(msg) => Some(msg),
173 _ => None,
174 }
175 }
176 pub fn as_mt210(&self) -> Option<&SwiftMessage<MT210>> {
177 match self {
178 ParsedSwiftMessage::MT210(msg) => Some(msg),
179 _ => None,
180 }
181 }
182 pub fn as_mt290(&self) -> Option<&SwiftMessage<MT290>> {
183 match self {
184 ParsedSwiftMessage::MT290(msg) => Some(msg),
185 _ => None,
186 }
187 }
188 pub fn as_mt900(&self) -> Option<&SwiftMessage<MT900>> {
189 match self {
190 ParsedSwiftMessage::MT900(msg) => Some(msg),
191 _ => None,
192 }
193 }
194 pub fn as_mt910(&self) -> Option<&SwiftMessage<MT910>> {
195 match self {
196 ParsedSwiftMessage::MT910(msg) => Some(msg),
197 _ => None,
198 }
199 }
200 pub fn as_mt920(&self) -> Option<&SwiftMessage<MT920>> {
201 match self {
202 ParsedSwiftMessage::MT920(msg) => Some(msg),
203 _ => None,
204 }
205 }
206 pub fn as_mt935(&self) -> Option<&SwiftMessage<MT935>> {
207 match self {
208 ParsedSwiftMessage::MT935(msg) => Some(msg),
209 _ => None,
210 }
211 }
212 pub fn as_mt940(&self) -> Option<&SwiftMessage<MT940>> {
213 match self {
214 ParsedSwiftMessage::MT940(msg) => Some(msg),
215 _ => None,
216 }
217 }
218 pub fn as_mt941(&self) -> Option<&SwiftMessage<MT941>> {
219 match self {
220 ParsedSwiftMessage::MT941(msg) => Some(msg),
221 _ => None,
222 }
223 }
224 pub fn as_mt942(&self) -> Option<&SwiftMessage<MT942>> {
225 match self {
226 ParsedSwiftMessage::MT942(msg) => Some(msg),
227 _ => None,
228 }
229 }
230 pub fn as_mt950(&self) -> Option<&SwiftMessage<MT950>> {
231 match self {
232 ParsedSwiftMessage::MT950(msg) => Some(msg),
233 _ => None,
234 }
235 }
236 pub fn as_mt192(&self) -> Option<&SwiftMessage<MT192>> {
237 match self {
238 ParsedSwiftMessage::MT192(msg) => Some(msg),
239 _ => None,
240 }
241 }
242 pub fn as_mt196(&self) -> Option<&SwiftMessage<MT196>> {
243 match self {
244 ParsedSwiftMessage::MT196(msg) => Some(msg),
245 _ => None,
246 }
247 }
248 pub fn as_mt292(&self) -> Option<&SwiftMessage<MT292>> {
249 match self {
250 ParsedSwiftMessage::MT292(msg) => Some(msg),
251 _ => None,
252 }
253 }
254 pub fn as_mt296(&self) -> Option<&SwiftMessage<MT296>> {
255 match self {
256 ParsedSwiftMessage::MT296(msg) => Some(msg),
257 _ => None,
258 }
259 }
260 pub fn as_mt199(&self) -> Option<&SwiftMessage<MT199>> {
261 match self {
262 ParsedSwiftMessage::MT199(msg) => Some(msg),
263 _ => None,
264 }
265 }
266 pub fn as_mt299(&self) -> Option<&SwiftMessage<MT299>> {
267 match self {
268 ParsedSwiftMessage::MT299(msg) => Some(msg),
269 _ => None,
270 }
271 }
272
273 pub fn into_mt101(self) -> Option<SwiftMessage<MT101>> {
275 match self {
276 ParsedSwiftMessage::MT101(msg) => Some(*msg),
277 _ => None,
278 }
279 }
280 pub fn into_mt103(self) -> Option<SwiftMessage<MT103>> {
281 match self {
282 ParsedSwiftMessage::MT103(msg) => Some(*msg),
283 _ => None,
284 }
285 }
286 pub fn into_mt104(self) -> Option<SwiftMessage<MT104>> {
287 match self {
288 ParsedSwiftMessage::MT104(msg) => Some(*msg),
289 _ => None,
290 }
291 }
292 pub fn into_mt107(self) -> Option<SwiftMessage<MT107>> {
293 match self {
294 ParsedSwiftMessage::MT107(msg) => Some(*msg),
295 _ => None,
296 }
297 }
298 pub fn into_mt110(self) -> Option<SwiftMessage<MT110>> {
299 match self {
300 ParsedSwiftMessage::MT110(msg) => Some(*msg),
301 _ => None,
302 }
303 }
304 pub fn into_mt111(self) -> Option<SwiftMessage<MT111>> {
305 match self {
306 ParsedSwiftMessage::MT111(msg) => Some(*msg),
307 _ => None,
308 }
309 }
310 pub fn into_mt112(self) -> Option<SwiftMessage<MT112>> {
311 match self {
312 ParsedSwiftMessage::MT112(msg) => Some(*msg),
313 _ => None,
314 }
315 }
316 pub fn into_mt190(self) -> Option<SwiftMessage<MT190>> {
317 match self {
318 ParsedSwiftMessage::MT190(msg) => Some(*msg),
319 _ => None,
320 }
321 }
322 pub fn into_mt200(self) -> Option<SwiftMessage<MT200>> {
323 match self {
324 ParsedSwiftMessage::MT200(msg) => Some(*msg),
325 _ => None,
326 }
327 }
328 pub fn into_mt202(self) -> Option<SwiftMessage<MT202>> {
329 match self {
330 ParsedSwiftMessage::MT202(msg) => Some(*msg),
331 _ => None,
332 }
333 }
334 pub fn into_mt204(self) -> Option<SwiftMessage<MT204>> {
335 match self {
336 ParsedSwiftMessage::MT204(msg) => Some(*msg),
337 _ => None,
338 }
339 }
340 pub fn into_mt205(self) -> Option<SwiftMessage<MT205>> {
341 match self {
342 ParsedSwiftMessage::MT205(msg) => Some(*msg),
343 _ => None,
344 }
345 }
346 pub fn into_mt210(self) -> Option<SwiftMessage<MT210>> {
347 match self {
348 ParsedSwiftMessage::MT210(msg) => Some(*msg),
349 _ => None,
350 }
351 }
352 pub fn into_mt290(self) -> Option<SwiftMessage<MT290>> {
353 match self {
354 ParsedSwiftMessage::MT290(msg) => Some(*msg),
355 _ => None,
356 }
357 }
358 pub fn into_mt900(self) -> Option<SwiftMessage<MT900>> {
359 match self {
360 ParsedSwiftMessage::MT900(msg) => Some(*msg),
361 _ => None,
362 }
363 }
364 pub fn into_mt910(self) -> Option<SwiftMessage<MT910>> {
365 match self {
366 ParsedSwiftMessage::MT910(msg) => Some(*msg),
367 _ => None,
368 }
369 }
370 pub fn into_mt920(self) -> Option<SwiftMessage<MT920>> {
371 match self {
372 ParsedSwiftMessage::MT920(msg) => Some(*msg),
373 _ => None,
374 }
375 }
376 pub fn into_mt935(self) -> Option<SwiftMessage<MT935>> {
377 match self {
378 ParsedSwiftMessage::MT935(msg) => Some(*msg),
379 _ => None,
380 }
381 }
382 pub fn into_mt940(self) -> Option<SwiftMessage<MT940>> {
383 match self {
384 ParsedSwiftMessage::MT940(msg) => Some(*msg),
385 _ => None,
386 }
387 }
388 pub fn into_mt941(self) -> Option<SwiftMessage<MT941>> {
389 match self {
390 ParsedSwiftMessage::MT941(msg) => Some(*msg),
391 _ => None,
392 }
393 }
394 pub fn into_mt942(self) -> Option<SwiftMessage<MT942>> {
395 match self {
396 ParsedSwiftMessage::MT942(msg) => Some(*msg),
397 _ => None,
398 }
399 }
400 pub fn into_mt950(self) -> Option<SwiftMessage<MT950>> {
401 match self {
402 ParsedSwiftMessage::MT950(msg) => Some(*msg),
403 _ => None,
404 }
405 }
406 pub fn into_mt192(self) -> Option<SwiftMessage<MT192>> {
407 match self {
408 ParsedSwiftMessage::MT192(msg) => Some(*msg),
409 _ => None,
410 }
411 }
412 pub fn into_mt196(self) -> Option<SwiftMessage<MT196>> {
413 match self {
414 ParsedSwiftMessage::MT196(msg) => Some(*msg),
415 _ => None,
416 }
417 }
418 pub fn into_mt292(self) -> Option<SwiftMessage<MT292>> {
419 match self {
420 ParsedSwiftMessage::MT292(msg) => Some(*msg),
421 _ => None,
422 }
423 }
424 pub fn into_mt296(self) -> Option<SwiftMessage<MT296>> {
425 match self {
426 ParsedSwiftMessage::MT296(msg) => Some(*msg),
427 _ => None,
428 }
429 }
430 pub fn into_mt199(self) -> Option<SwiftMessage<MT199>> {
431 match self {
432 ParsedSwiftMessage::MT199(msg) => Some(*msg),
433 _ => None,
434 }
435 }
436 pub fn into_mt299(self) -> Option<SwiftMessage<MT299>> {
437 match self {
438 ParsedSwiftMessage::MT299(msg) => Some(*msg),
439 _ => None,
440 }
441 }
442
443 pub fn validate(&self) -> ValidationResult {
444 match self {
445 ParsedSwiftMessage::MT101(mt101) => mt101.validate(),
446 ParsedSwiftMessage::MT103(mt103) => mt103.validate(),
447 ParsedSwiftMessage::MT104(mt104) => mt104.validate(),
448 ParsedSwiftMessage::MT107(mt107) => mt107.validate(),
449 ParsedSwiftMessage::MT110(mt110) => mt110.validate(),
450 ParsedSwiftMessage::MT111(mt111) => mt111.validate(),
451 ParsedSwiftMessage::MT112(mt112) => mt112.validate(),
452 ParsedSwiftMessage::MT190(mt190) => mt190.validate(),
453 ParsedSwiftMessage::MT192(mt192) => mt192.validate(),
454 ParsedSwiftMessage::MT196(mt196) => mt196.validate(),
455 ParsedSwiftMessage::MT199(mt199) => mt199.validate(),
456 ParsedSwiftMessage::MT200(mt200) => mt200.validate(),
457 ParsedSwiftMessage::MT202(mt202) => mt202.validate(),
458 ParsedSwiftMessage::MT204(mt204) => mt204.validate(),
459 ParsedSwiftMessage::MT205(mt205) => mt205.validate(),
460 ParsedSwiftMessage::MT210(mt210) => mt210.validate(),
461 ParsedSwiftMessage::MT290(mt290) => mt290.validate(),
462 ParsedSwiftMessage::MT900(mt900) => mt900.validate(),
463 ParsedSwiftMessage::MT910(mt910) => mt910.validate(),
464 ParsedSwiftMessage::MT920(mt920) => mt920.validate(),
465 ParsedSwiftMessage::MT292(mt292) => mt292.validate(),
466 ParsedSwiftMessage::MT296(mt296) => mt296.validate(),
467 ParsedSwiftMessage::MT299(mt299) => mt299.validate(),
468 ParsedSwiftMessage::MT935(mt935) => mt935.validate(),
469 ParsedSwiftMessage::MT940(mt940) => mt940.validate(),
470 ParsedSwiftMessage::MT941(mt941) => mt941.validate(),
471 ParsedSwiftMessage::MT942(mt942) => mt942.validate(),
472 ParsedSwiftMessage::MT950(mt950) => mt950.validate(),
473 }
474 }
475}