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