replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / service / notification / cpp-wrapper / common / NSMessage.cpp
1 //******************************************************************\r
2 //\r
3 // Copyright 2016 Samsung Electronics All Rights Reserved.\r
4 //\r
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
6 //\r
7 // Licensed under the Apache License, Version 2.0 (the "License");\r
8 // you may not use this file except in compliance with the License.\r
9 // You may obtain a copy of the License at\r
10 //\r
11 //      http://www.apache.org/licenses/LICENSE-2.0\r
12 //\r
13 // Unless required by applicable law or agreed to in writing, software\r
14 // distributed under the License is distributed on an "AS IS" BASIS,\r
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16 // See the License for the specific language governing permissions and\r
17 // limitations under the License.\r
18 //\r
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
20 \r
21 #include "NSMessage.h"\r
22 #include "string.h"\r
23 #include "NSUtils.h"\r
24 #include <cstdint>\r
25 \r
26 namespace OIC\r
27 {\r
28     namespace Service\r
29     {\r
30         NSMessage::NSMessage(::NSMessage *msg)\r
31         {\r
32             m_messageId = 0;\r
33             m_type = NSMessage::NSMessageType::NS_MESSAGE_ALERT;\r
34             m_ttl = 0;\r
35             m_mediaContents = nullptr;\r
36 \r
37             if (msg != nullptr)\r
38             {\r
39                 m_messageId = msg->messageId;\r
40                 m_providerId.assign(msg->providerId, NS_UTILS_UUID_STRING_SIZE - 1);\r
41 \r
42                 m_type = (NSMessageType)msg->type;\r
43 \r
44                 if ((msg->dateTime != nullptr) && strlen(msg->dateTime))\r
45                 {\r
46                     m_time.assign(msg->dateTime, strlen(msg->dateTime));\r
47                 }\r
48 \r
49                 m_ttl =  msg->ttl;\r
50 \r
51                 if ((msg->title != nullptr) && strlen(msg->title))\r
52                 {\r
53                     m_title.assign(msg->title, strlen(msg->title));\r
54                 }\r
55 \r
56                 if ((msg->contentText != nullptr) && strlen(msg->contentText))\r
57                 {\r
58                     m_contentText.assign(msg->contentText, strlen(msg->contentText));\r
59                 }\r
60 \r
61                 if ((msg->sourceName != nullptr) && strlen(msg->sourceName))\r
62                 {\r
63                     m_sourceName.assign(msg->sourceName, strlen(msg->sourceName));\r
64                 }\r
65 \r
66                 if (msg->mediaContents != nullptr)\r
67                 {\r
68                     m_mediaContents = new NSMediaContents();\r
69                     if ((msg->mediaContents->iconImage != nullptr) && strlen(msg->mediaContents->iconImage))\r
70                     {\r
71                         m_mediaContents->setIconImage(msg->mediaContents->iconImage);\r
72                     }\r
73                 }\r
74 \r
75                 if ((msg->topic != nullptr) && strlen(msg->topic))\r
76                 {\r
77                     m_topic.assign(msg->topic, strlen(msg->topic));\r
78                 }\r
79 \r
80                 if (msg->extraInfo != nullptr)\r
81                 {\r
82                     OC::MessageContainer info;\r
83                     info.setPayload(msg->extraInfo);\r
84                     const std::vector<OC::OCRepresentation> &reps = info.representations();\r
85                     if (reps.size() > 0)\r
86                     {\r
87                         std::vector<OC::OCRepresentation>::const_iterator itr = reps.begin();\r
88                         std::vector<OC::OCRepresentation>::const_iterator back = reps.end();\r
89                         m_extraInfo = *itr;\r
90                         ++itr;\r
91 \r
92                         for (; itr != back; ++itr)\r
93                         {\r
94                             m_extraInfo.addChild(*itr);\r
95                         }\r
96                     }\r
97                 }\r
98             }\r
99         }\r
100 \r
101         NSMessage::NSMessage(const NSMessage &msg)\r
102         {\r
103             m_messageId = msg.getMessageId();\r
104             m_providerId = msg.getProviderId();\r
105 \r
106             m_type = msg.getType();\r
107             m_time = msg.getTime();\r
108             m_ttl = msg.getTTL();\r
109             m_title = msg.getTitle();\r
110             m_contentText = msg.getContentText();\r
111             m_sourceName = msg.getSourceName();\r
112 \r
113             if (msg.getMediaContents() != nullptr)\r
114             {\r
115                 m_mediaContents = new NSMediaContents(msg.getMediaContents()->getIconImage());\r
116             }\r
117             else\r
118             {\r
119                 m_mediaContents = new NSMediaContents();\r
120             }\r
121             m_topic = msg.getTopic();\r
122             m_extraInfo = OC::OCRepresentation(msg.getExtraInfo());\r
123         }\r
124 \r
125         NSMessage &NSMessage::operator=(const NSMessage &msg)\r
126         {\r
127             this->m_messageId = msg.getMessageId();\r
128             this->m_providerId = msg.getProviderId();\r
129 \r
130             this->m_type = msg.getType();\r
131             this->m_time = msg.getTime();\r
132             this->m_ttl = msg.getTTL();\r
133             this->m_title = msg.getTitle();\r
134             this->m_contentText = msg.getContentText();\r
135             this->m_sourceName = msg.getSourceName();\r
136 \r
137             if (msg.getMediaContents() != nullptr)\r
138             {\r
139                 this->m_mediaContents = new NSMediaContents(msg.getMediaContents()->getIconImage());\r
140             }\r
141             else\r
142             {\r
143                 this->m_mediaContents = new NSMediaContents();\r
144             }\r
145             this->m_topic = msg.getTopic();\r
146             this->m_extraInfo = OC::OCRepresentation(msg.getExtraInfo());\r
147             return *this;\r
148         }\r
149 \r
150         NSMessage::~NSMessage()\r
151         {\r
152             if (m_mediaContents != nullptr)\r
153             {\r
154                 delete m_mediaContents;\r
155             }\r
156         }\r
157 \r
158         uint64_t NSMessage::getMessageId() const\r
159         {\r
160             return m_messageId;\r
161         }\r
162 \r
163         std::string NSMessage::getProviderId() const\r
164         {\r
165             return m_providerId;\r
166         }\r
167 \r
168         NSMessage::NSMessageType NSMessage::getType() const\r
169         {\r
170             return m_type;\r
171         }\r
172 \r
173         std::string NSMessage::getTime() const\r
174         {\r
175             return m_time;\r
176         }\r
177 \r
178         uint64_t NSMessage::getTTL() const\r
179         {\r
180             return m_ttl;\r
181         }\r
182 \r
183         std::string NSMessage::getTitle() const\r
184         {\r
185             return m_title;\r
186         }\r
187 \r
188         std::string NSMessage::getContentText() const\r
189         {\r
190             return m_contentText;\r
191         }\r
192 \r
193         std::string NSMessage::getSourceName() const\r
194         {\r
195             return m_sourceName;\r
196         }\r
197 \r
198         NSMediaContents *NSMessage::getMediaContents() const\r
199         {\r
200             return m_mediaContents;\r
201         }\r
202 \r
203         std::string NSMessage::getTopic() const\r
204         {\r
205             return m_topic;\r
206         }\r
207 \r
208         void NSMessage::setType(const NSMessageType &type)\r
209         {\r
210             m_type = type;\r
211         }\r
212 \r
213         void NSMessage::setTime(const std::string &time)\r
214         {\r
215             m_time = time;\r
216         }\r
217 \r
218         void NSMessage::setTTL(const uint64_t &ttl)\r
219         {\r
220             m_ttl = ttl;\r
221         }\r
222 \r
223         void NSMessage::setTitle(const std::string &title)\r
224         {\r
225             m_title = title;\r
226         }\r
227 \r
228         void NSMessage::setContentText(const std::string &contextText)\r
229         {\r
230             m_contentText = contextText;\r
231         }\r
232 \r
233         void NSMessage::setSourceName(const std::string &sourceName)\r
234         {\r
235             m_sourceName = sourceName;\r
236         }\r
237 \r
238         void NSMessage::setMediaContents(NSMediaContents *mediaContents)\r
239         {\r
240             m_mediaContents = mediaContents;\r
241         }\r
242 \r
243         void NSMessage::setTopic(const std::string &topic)\r
244         {\r
245             m_topic = topic;\r
246         }\r
247 \r
248         OC::OCRepresentation NSMessage::getExtraInfo() const\r
249         {\r
250             return OC::OCRepresentation(m_extraInfo);\r
251         }\r
252 \r
253         void NSMessage::setExtraInfo(const OC::OCRepresentation &extraInfo)\r
254         {\r
255             m_extraInfo = OC::OCRepresentation(extraInfo);\r
256         }\r
257     }\r
258 }\r