1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
3 #include "base/dictionary.hpp"
4 #include "base/function.hpp"
5 #include "base/functionwrapper.hpp"
6 #include "base/scriptframe.hpp"
7 #include "base/initialize.hpp"
8 #include "base/json.hpp"
10 using namespace icinga;
12 static String JsonEncodeShim(const Value& value)
14 return JsonEncode(value);
17 INITIALIZE_ONCE([]() {
18 auto jsonNSBehavior = new ConstNamespaceBehavior();
19 Namespace::Ptr jsonNS = new Namespace(jsonNSBehavior);
22 jsonNS->Set("encode", new Function("Json#encode", JsonEncodeShim, { "value" }, true));
23 jsonNS->Set("decode", new Function("Json#decode", JsonDecode, { "value" }, true));
25 jsonNSBehavior->Freeze();
27 Namespace::Ptr systemNS = ScriptGlobal::Get("System");
28 systemNS->SetAttribute("Json", std::make_shared<ConstEmbeddedNamespaceValue>(jsonNS));