1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #include <aws/cloudfront/model/DistributionConfig.h>
7 #include <aws/core/utils/xml/XmlSerializer.h>
8 #include <aws/core/utils/StringUtils.h>
9 #include <aws/core/utils/memory/stl/AWSStringStream.h>
10 
11 #include <utility>
12 
13 using namespace Aws::Utils::Xml;
14 using namespace Aws::Utils;
15 
16 namespace Aws
17 {
18 namespace CloudFront
19 {
20 namespace Model
21 {
22 
DistributionConfig()23 DistributionConfig::DistributionConfig() :
24     m_callerReferenceHasBeenSet(false),
25     m_aliasesHasBeenSet(false),
26     m_defaultRootObjectHasBeenSet(false),
27     m_originsHasBeenSet(false),
28     m_originGroupsHasBeenSet(false),
29     m_defaultCacheBehaviorHasBeenSet(false),
30     m_cacheBehaviorsHasBeenSet(false),
31     m_customErrorResponsesHasBeenSet(false),
32     m_commentHasBeenSet(false),
33     m_loggingHasBeenSet(false),
34     m_priceClass(PriceClass::NOT_SET),
35     m_priceClassHasBeenSet(false),
36     m_enabled(false),
37     m_enabledHasBeenSet(false),
38     m_viewerCertificateHasBeenSet(false),
39     m_restrictionsHasBeenSet(false),
40     m_webACLIdHasBeenSet(false),
41     m_httpVersion(HttpVersion::NOT_SET),
42     m_httpVersionHasBeenSet(false),
43     m_isIPV6Enabled(false),
44     m_isIPV6EnabledHasBeenSet(false)
45 {
46 }
47 
DistributionConfig(const XmlNode & xmlNode)48 DistributionConfig::DistributionConfig(const XmlNode& xmlNode) :
49     m_callerReferenceHasBeenSet(false),
50     m_aliasesHasBeenSet(false),
51     m_defaultRootObjectHasBeenSet(false),
52     m_originsHasBeenSet(false),
53     m_originGroupsHasBeenSet(false),
54     m_defaultCacheBehaviorHasBeenSet(false),
55     m_cacheBehaviorsHasBeenSet(false),
56     m_customErrorResponsesHasBeenSet(false),
57     m_commentHasBeenSet(false),
58     m_loggingHasBeenSet(false),
59     m_priceClass(PriceClass::NOT_SET),
60     m_priceClassHasBeenSet(false),
61     m_enabled(false),
62     m_enabledHasBeenSet(false),
63     m_viewerCertificateHasBeenSet(false),
64     m_restrictionsHasBeenSet(false),
65     m_webACLIdHasBeenSet(false),
66     m_httpVersion(HttpVersion::NOT_SET),
67     m_httpVersionHasBeenSet(false),
68     m_isIPV6Enabled(false),
69     m_isIPV6EnabledHasBeenSet(false)
70 {
71   *this = xmlNode;
72 }
73 
operator =(const XmlNode & xmlNode)74 DistributionConfig& DistributionConfig::operator =(const XmlNode& xmlNode)
75 {
76   XmlNode resultNode = xmlNode;
77 
78   if(!resultNode.IsNull())
79   {
80     XmlNode callerReferenceNode = resultNode.FirstChild("CallerReference");
81     if(!callerReferenceNode.IsNull())
82     {
83       m_callerReference = Aws::Utils::Xml::DecodeEscapedXmlText(callerReferenceNode.GetText());
84       m_callerReferenceHasBeenSet = true;
85     }
86     XmlNode aliasesNode = resultNode.FirstChild("Aliases");
87     if(!aliasesNode.IsNull())
88     {
89       m_aliases = aliasesNode;
90       m_aliasesHasBeenSet = true;
91     }
92     XmlNode defaultRootObjectNode = resultNode.FirstChild("DefaultRootObject");
93     if(!defaultRootObjectNode.IsNull())
94     {
95       m_defaultRootObject = Aws::Utils::Xml::DecodeEscapedXmlText(defaultRootObjectNode.GetText());
96       m_defaultRootObjectHasBeenSet = true;
97     }
98     XmlNode originsNode = resultNode.FirstChild("Origins");
99     if(!originsNode.IsNull())
100     {
101       m_origins = originsNode;
102       m_originsHasBeenSet = true;
103     }
104     XmlNode originGroupsNode = resultNode.FirstChild("OriginGroups");
105     if(!originGroupsNode.IsNull())
106     {
107       m_originGroups = originGroupsNode;
108       m_originGroupsHasBeenSet = true;
109     }
110     XmlNode defaultCacheBehaviorNode = resultNode.FirstChild("DefaultCacheBehavior");
111     if(!defaultCacheBehaviorNode.IsNull())
112     {
113       m_defaultCacheBehavior = defaultCacheBehaviorNode;
114       m_defaultCacheBehaviorHasBeenSet = true;
115     }
116     XmlNode cacheBehaviorsNode = resultNode.FirstChild("CacheBehaviors");
117     if(!cacheBehaviorsNode.IsNull())
118     {
119       m_cacheBehaviors = cacheBehaviorsNode;
120       m_cacheBehaviorsHasBeenSet = true;
121     }
122     XmlNode customErrorResponsesNode = resultNode.FirstChild("CustomErrorResponses");
123     if(!customErrorResponsesNode.IsNull())
124     {
125       m_customErrorResponses = customErrorResponsesNode;
126       m_customErrorResponsesHasBeenSet = true;
127     }
128     XmlNode commentNode = resultNode.FirstChild("Comment");
129     if(!commentNode.IsNull())
130     {
131       m_comment = Aws::Utils::Xml::DecodeEscapedXmlText(commentNode.GetText());
132       m_commentHasBeenSet = true;
133     }
134     XmlNode loggingNode = resultNode.FirstChild("Logging");
135     if(!loggingNode.IsNull())
136     {
137       m_logging = loggingNode;
138       m_loggingHasBeenSet = true;
139     }
140     XmlNode priceClassNode = resultNode.FirstChild("PriceClass");
141     if(!priceClassNode.IsNull())
142     {
143       m_priceClass = PriceClassMapper::GetPriceClassForName(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(priceClassNode.GetText()).c_str()).c_str());
144       m_priceClassHasBeenSet = true;
145     }
146     XmlNode enabledNode = resultNode.FirstChild("Enabled");
147     if(!enabledNode.IsNull())
148     {
149       m_enabled = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(enabledNode.GetText()).c_str()).c_str());
150       m_enabledHasBeenSet = true;
151     }
152     XmlNode viewerCertificateNode = resultNode.FirstChild("ViewerCertificate");
153     if(!viewerCertificateNode.IsNull())
154     {
155       m_viewerCertificate = viewerCertificateNode;
156       m_viewerCertificateHasBeenSet = true;
157     }
158     XmlNode restrictionsNode = resultNode.FirstChild("Restrictions");
159     if(!restrictionsNode.IsNull())
160     {
161       m_restrictions = restrictionsNode;
162       m_restrictionsHasBeenSet = true;
163     }
164     XmlNode webACLIdNode = resultNode.FirstChild("WebACLId");
165     if(!webACLIdNode.IsNull())
166     {
167       m_webACLId = Aws::Utils::Xml::DecodeEscapedXmlText(webACLIdNode.GetText());
168       m_webACLIdHasBeenSet = true;
169     }
170     XmlNode httpVersionNode = resultNode.FirstChild("HttpVersion");
171     if(!httpVersionNode.IsNull())
172     {
173       m_httpVersion = HttpVersionMapper::GetHttpVersionForName(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(httpVersionNode.GetText()).c_str()).c_str());
174       m_httpVersionHasBeenSet = true;
175     }
176     XmlNode isIPV6EnabledNode = resultNode.FirstChild("IsIPV6Enabled");
177     if(!isIPV6EnabledNode.IsNull())
178     {
179       m_isIPV6Enabled = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(isIPV6EnabledNode.GetText()).c_str()).c_str());
180       m_isIPV6EnabledHasBeenSet = true;
181     }
182   }
183 
184   return *this;
185 }
186 
AddToNode(XmlNode & parentNode) const187 void DistributionConfig::AddToNode(XmlNode& parentNode) const
188 {
189   Aws::StringStream ss;
190   if(m_callerReferenceHasBeenSet)
191   {
192    XmlNode callerReferenceNode = parentNode.CreateChildElement("CallerReference");
193    callerReferenceNode.SetText(m_callerReference);
194   }
195 
196   if(m_aliasesHasBeenSet)
197   {
198    XmlNode aliasesNode = parentNode.CreateChildElement("Aliases");
199    m_aliases.AddToNode(aliasesNode);
200   }
201 
202   if(m_defaultRootObjectHasBeenSet)
203   {
204    XmlNode defaultRootObjectNode = parentNode.CreateChildElement("DefaultRootObject");
205    defaultRootObjectNode.SetText(m_defaultRootObject);
206   }
207 
208   if(m_originsHasBeenSet)
209   {
210    XmlNode originsNode = parentNode.CreateChildElement("Origins");
211    m_origins.AddToNode(originsNode);
212   }
213 
214   if(m_originGroupsHasBeenSet)
215   {
216    XmlNode originGroupsNode = parentNode.CreateChildElement("OriginGroups");
217    m_originGroups.AddToNode(originGroupsNode);
218   }
219 
220   if(m_defaultCacheBehaviorHasBeenSet)
221   {
222    XmlNode defaultCacheBehaviorNode = parentNode.CreateChildElement("DefaultCacheBehavior");
223    m_defaultCacheBehavior.AddToNode(defaultCacheBehaviorNode);
224   }
225 
226   if(m_cacheBehaviorsHasBeenSet)
227   {
228    XmlNode cacheBehaviorsNode = parentNode.CreateChildElement("CacheBehaviors");
229    m_cacheBehaviors.AddToNode(cacheBehaviorsNode);
230   }
231 
232   if(m_customErrorResponsesHasBeenSet)
233   {
234    XmlNode customErrorResponsesNode = parentNode.CreateChildElement("CustomErrorResponses");
235    m_customErrorResponses.AddToNode(customErrorResponsesNode);
236   }
237 
238   if(m_commentHasBeenSet)
239   {
240    XmlNode commentNode = parentNode.CreateChildElement("Comment");
241    commentNode.SetText(m_comment);
242   }
243 
244   if(m_loggingHasBeenSet)
245   {
246    XmlNode loggingNode = parentNode.CreateChildElement("Logging");
247    m_logging.AddToNode(loggingNode);
248   }
249 
250   if(m_priceClassHasBeenSet)
251   {
252    XmlNode priceClassNode = parentNode.CreateChildElement("PriceClass");
253    priceClassNode.SetText(PriceClassMapper::GetNameForPriceClass(m_priceClass));
254   }
255 
256   if(m_enabledHasBeenSet)
257   {
258    XmlNode enabledNode = parentNode.CreateChildElement("Enabled");
259    ss << std::boolalpha << m_enabled;
260    enabledNode.SetText(ss.str());
261    ss.str("");
262   }
263 
264   if(m_viewerCertificateHasBeenSet)
265   {
266    XmlNode viewerCertificateNode = parentNode.CreateChildElement("ViewerCertificate");
267    m_viewerCertificate.AddToNode(viewerCertificateNode);
268   }
269 
270   if(m_restrictionsHasBeenSet)
271   {
272    XmlNode restrictionsNode = parentNode.CreateChildElement("Restrictions");
273    m_restrictions.AddToNode(restrictionsNode);
274   }
275 
276   if(m_webACLIdHasBeenSet)
277   {
278    XmlNode webACLIdNode = parentNode.CreateChildElement("WebACLId");
279    webACLIdNode.SetText(m_webACLId);
280   }
281 
282   if(m_httpVersionHasBeenSet)
283   {
284    XmlNode httpVersionNode = parentNode.CreateChildElement("HttpVersion");
285    httpVersionNode.SetText(HttpVersionMapper::GetNameForHttpVersion(m_httpVersion));
286   }
287 
288   if(m_isIPV6EnabledHasBeenSet)
289   {
290    XmlNode isIPV6EnabledNode = parentNode.CreateChildElement("IsIPV6Enabled");
291    ss << std::boolalpha << m_isIPV6Enabled;
292    isIPV6EnabledNode.SetText(ss.str());
293    ss.str("");
294   }
295 
296 }
297 
298 } // namespace Model
299 } // namespace CloudFront
300 } // namespace Aws
301