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