1 /**
2 * Copyright © DiamondMVC 2019
3 * License: MIT (https://github.com/DiamondMVC/Diamond/blob/master/LICENSE)
4 * Author: Jacob Jensen (bausshf)
5 */
6 module diamond.web.soap.client.envelopebody;
7
8 import diamond.web.soap.client.envelopeparameter;
9
10 /// Wrapper around a soap envelope body.
11 final class SoapEnvelopeBody
12 {
13 private:
14 /// The method.
15 string _method;
16 /// The parameters.
17 SoapEnvelopeParameter[] _parameters;
18
19 public:
20 final:
21 /**
22 * Creates a new soap envelope body.
23 * Params:
24 * method = The method of the body.
25 */
26 this(string method)
27 {
28 _method = method;
29 }
30
31 @property
32 {
33 /// Gets the method of the body.
34 string method() { return _method; }
35
36 /// Gets the parameters of the body.
37 SoapEnvelopeParameter[] parameters() { return _parameters; }
38 }
39
40 /**
41 * Adds a parameter to the body.
42 * Params:
43 * name = The name.
44 * value = The value.
45 */
46 void addParameter(string name, string value)
47 {
48 _parameters ~= new SoapEnvelopeParameter(name, value);
49 }
50
51 /**
52 * Gets a parameter from the body.
53 * Params:
54 * name = The name of the parameter.
55 * Returns:
56 * The parameter if found, null otherwise.
57 */
58 SoapEnvelopeParameter getParameter(string name)
59 {
60 import std.algorithm : filter;
61 import std.array : array;
62 import std..string : toLower, strip;
63
64 if (!name || !name.length)
65 {
66 return null;
67 }
68
69 if (!_parameters || !_parameters.length)
70 {
71 return null;
72 }
73
74 auto parameter = _parameters.filter!(p => p.name.toLower().strip() == name.toLower().strip()).array;
75
76 if (!parameter || !parameter.length)
77 {
78 return null;
79 }
80
81 return parameter[0];
82 }
83 }