Rule management added.
[platform/core/security/suspicious-activity-monitor.git] / communication / inc / reportcomposer.h
1 /**
2  * Samsung Ukraine R&D Center (SRK under a contract between)
3  * LLC "Samsung Electronics Co", Ltd (Seoul, Republic of Korea)
4  * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License
17  */
18 /**
19  * @file   reportcomposer.h
20  * @brief  Report composer helper
21  * @date   Created Feb 14, 2018
22  * @author Mail to: <A HREF="mailto:d.lomtev@samsung.com">Dmytro Lomtev, d.lomtev@samsung.com</A>
23  */
24 #ifndef REPORTCOMPOSER_H
25 #define REPORTCOMPOSER_H
26
27 #include <sstream>
28 #include <jsoncpp/json/value.h>
29 #include <memory>
30
31 namespace communication
32 {
33
34 typedef std::pair<std::string, Json::Value> ReportEvent;
35
36 /**
37  * @brief The ReportComposer class used for packing report into one message
38  */
39 class ReportComposer
40 {
41 public:
42     /**
43      * @brief Constructor
44      */
45     ReportComposer();
46
47     /**
48      * @brief Adds a report event to then message
49      * @param event - report event
50      */
51     void addEvent(const ReportEvent& event);
52
53     /**
54      * @brief Adds a group of events to the message
55      * @param first iterator pointing to the first event
56      * @param second iterator pointing after the last event
57      */
58     template<typename InputIterator>
59     void addEvents(InputIterator first, InputIterator last)
60     {
61         for (;first != last; ++first) {
62             addEvent(*first);
63         }
64     }
65
66     /**
67      * @brief str Returns composed JSON report as string
68      * @return composed report as string
69      */
70     std::string str();
71
72     /**
73      * @brief get Returns composed report as Json::Value
74      * @return report as Json::Value
75      */
76     const Json::Value& get();
77
78 private:
79     Json::Value root;
80 };
81
82 } // namespace communication
83
84 #endif // REPORTCOMPOSER_H