]> granicus.if.org Git - icinga2/blob - lib/base/json-script.cpp
Merge pull request #7185 from Icinga/bugfix/gelfwriter-wrong-log-facility
[icinga2] / lib / base / json-script.cpp
1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2
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"
9
10 using namespace icinga;
11
12 static String JsonEncodeShim(const Value& value)
13 {
14         return JsonEncode(value);
15 }
16
17 INITIALIZE_ONCE([]() {
18         auto jsonNSBehavior = new ConstNamespaceBehavior();
19         Namespace::Ptr jsonNS = new Namespace(jsonNSBehavior);
20
21         /* Methods */
22         jsonNS->Set("encode", new Function("Json#encode", JsonEncodeShim, { "value" }, true));
23         jsonNS->Set("decode", new Function("Json#decode", JsonDecode, { "value" }, true));
24
25         jsonNSBehavior->Freeze();
26
27         Namespace::Ptr systemNS = ScriptGlobal::Get("System");
28         systemNS->SetAttribute("Json", std::make_shared<ConstEmbeddedNamespaceValue>(jsonNS));
29 });