1 /*
2  *  Copyright (C) 2012-2018 Team Kodi
3  *  This file is part of Kodi - https://kodi.tv
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *  See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "interfaces/IAnnouncer.h"
12 #include "utils/JSONVariantWriter.h"
13 #include "utils/Variant.h"
14 
15 namespace JSONRPC
16 {
17   class IJSONRPCAnnouncer : public ANNOUNCEMENT::IAnnouncer
18   {
19   public:
20     ~IJSONRPCAnnouncer() override = default;
21 
22   protected:
AnnouncementToJSONRPC(ANNOUNCEMENT::AnnouncementFlag flag,const std::string & sender,const std::string & method,const CVariant & data,bool compactOutput)23     static std::string AnnouncementToJSONRPC(ANNOUNCEMENT::AnnouncementFlag flag,
24                                              const std::string& sender,
25                                              const std::string& method,
26                                              const CVariant& data,
27                                              bool compactOutput)
28     {
29       CVariant root;
30       root["jsonrpc"] = "2.0";
31 
32       std::string namespaceMethod = ANNOUNCEMENT::AnnouncementFlagToString(flag);
33       namespaceMethod += ".";
34       namespaceMethod += method;
35       root["method"] = namespaceMethod;
36 
37       root["params"]["data"] = data;
38       root["params"]["sender"] = sender;
39 
40       std::string str;
41       CJSONVariantWriter::Write(root, str, compactOutput);
42 
43       return str;
44     }
45   };
46 }
47