1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #include <aws/s3/model/ObjectVersion.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 S3
19 {
20 namespace Model
21 {
22 
ObjectVersion()23 ObjectVersion::ObjectVersion() :
24     m_eTagHasBeenSet(false),
25     m_size(0),
26     m_sizeHasBeenSet(false),
27     m_storageClass(ObjectVersionStorageClass::NOT_SET),
28     m_storageClassHasBeenSet(false),
29     m_keyHasBeenSet(false),
30     m_versionIdHasBeenSet(false),
31     m_isLatest(false),
32     m_isLatestHasBeenSet(false),
33     m_lastModifiedHasBeenSet(false),
34     m_ownerHasBeenSet(false)
35 {
36 }
37 
ObjectVersion(const XmlNode & xmlNode)38 ObjectVersion::ObjectVersion(const XmlNode& xmlNode) :
39     m_eTagHasBeenSet(false),
40     m_size(0),
41     m_sizeHasBeenSet(false),
42     m_storageClass(ObjectVersionStorageClass::NOT_SET),
43     m_storageClassHasBeenSet(false),
44     m_keyHasBeenSet(false),
45     m_versionIdHasBeenSet(false),
46     m_isLatest(false),
47     m_isLatestHasBeenSet(false),
48     m_lastModifiedHasBeenSet(false),
49     m_ownerHasBeenSet(false)
50 {
51   *this = xmlNode;
52 }
53 
operator =(const XmlNode & xmlNode)54 ObjectVersion& ObjectVersion::operator =(const XmlNode& xmlNode)
55 {
56   XmlNode resultNode = xmlNode;
57 
58   if(!resultNode.IsNull())
59   {
60     XmlNode eTagNode = resultNode.FirstChild("ETag");
61     if(!eTagNode.IsNull())
62     {
63       m_eTag = Aws::Utils::Xml::DecodeEscapedXmlText(eTagNode.GetText());
64       m_eTagHasBeenSet = true;
65     }
66     XmlNode sizeNode = resultNode.FirstChild("Size");
67     if(!sizeNode.IsNull())
68     {
69       m_size = StringUtils::ConvertToInt64(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(sizeNode.GetText()).c_str()).c_str());
70       m_sizeHasBeenSet = true;
71     }
72     XmlNode storageClassNode = resultNode.FirstChild("StorageClass");
73     if(!storageClassNode.IsNull())
74     {
75       m_storageClass = ObjectVersionStorageClassMapper::GetObjectVersionStorageClassForName(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(storageClassNode.GetText()).c_str()).c_str());
76       m_storageClassHasBeenSet = true;
77     }
78     XmlNode keyNode = resultNode.FirstChild("Key");
79     if(!keyNode.IsNull())
80     {
81       m_key = Aws::Utils::Xml::DecodeEscapedXmlText(keyNode.GetText());
82       m_keyHasBeenSet = true;
83     }
84     XmlNode versionIdNode = resultNode.FirstChild("VersionId");
85     if(!versionIdNode.IsNull())
86     {
87       m_versionId = Aws::Utils::Xml::DecodeEscapedXmlText(versionIdNode.GetText());
88       m_versionIdHasBeenSet = true;
89     }
90     XmlNode isLatestNode = resultNode.FirstChild("IsLatest");
91     if(!isLatestNode.IsNull())
92     {
93       m_isLatest = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(isLatestNode.GetText()).c_str()).c_str());
94       m_isLatestHasBeenSet = true;
95     }
96     XmlNode lastModifiedNode = resultNode.FirstChild("LastModified");
97     if(!lastModifiedNode.IsNull())
98     {
99       m_lastModified = DateTime(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(lastModifiedNode.GetText()).c_str()).c_str(), DateFormat::ISO_8601);
100       m_lastModifiedHasBeenSet = true;
101     }
102     XmlNode ownerNode = resultNode.FirstChild("Owner");
103     if(!ownerNode.IsNull())
104     {
105       m_owner = ownerNode;
106       m_ownerHasBeenSet = true;
107     }
108   }
109 
110   return *this;
111 }
112 
AddToNode(XmlNode & parentNode) const113 void ObjectVersion::AddToNode(XmlNode& parentNode) const
114 {
115   Aws::StringStream ss;
116   if(m_eTagHasBeenSet)
117   {
118    XmlNode eTagNode = parentNode.CreateChildElement("ETag");
119    eTagNode.SetText(m_eTag);
120   }
121 
122   if(m_sizeHasBeenSet)
123   {
124    XmlNode sizeNode = parentNode.CreateChildElement("Size");
125    ss << m_size;
126    sizeNode.SetText(ss.str());
127    ss.str("");
128   }
129 
130   if(m_storageClassHasBeenSet)
131   {
132    XmlNode storageClassNode = parentNode.CreateChildElement("StorageClass");
133    storageClassNode.SetText(ObjectVersionStorageClassMapper::GetNameForObjectVersionStorageClass(m_storageClass));
134   }
135 
136   if(m_keyHasBeenSet)
137   {
138    XmlNode keyNode = parentNode.CreateChildElement("Key");
139    keyNode.SetText(m_key);
140   }
141 
142   if(m_versionIdHasBeenSet)
143   {
144    XmlNode versionIdNode = parentNode.CreateChildElement("VersionId");
145    versionIdNode.SetText(m_versionId);
146   }
147 
148   if(m_isLatestHasBeenSet)
149   {
150    XmlNode isLatestNode = parentNode.CreateChildElement("IsLatest");
151    ss << std::boolalpha << m_isLatest;
152    isLatestNode.SetText(ss.str());
153    ss.str("");
154   }
155 
156   if(m_lastModifiedHasBeenSet)
157   {
158    XmlNode lastModifiedNode = parentNode.CreateChildElement("LastModified");
159    lastModifiedNode.SetText(m_lastModified.ToGmtString(DateFormat::ISO_8601));
160   }
161 
162   if(m_ownerHasBeenSet)
163   {
164    XmlNode ownerNode = parentNode.CreateChildElement("Owner");
165    m_owner.AddToNode(ownerNode);
166   }
167 
168 }
169 
170 } // namespace Model
171 } // namespace S3
172 } // namespace Aws
173