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