MCPcopy Create free account
hub / github.com/Icinga/icinga2 / HandleGet

Method HandleGet

lib/remote/configstageshandler.cpp:50–91  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

48}
49
50void ConfigStagesHandler::HandleGet(const HttpApiRequest& request, HttpApiResponse& response, boost::asio::yield_context& yc)
51{
52 namespace http = boost::beast::http;
53
54 auto url = request.Url();
55 auto user = request.User();
56 auto params = request.Params();
57
58 FilterUtility::CheckPermission(user, "config/query");
59
60 if (url->GetPath().size() >= 4)
61 params->Set("package", url->GetPath()[3]);
62
63 if (url->GetPath().size() >= 5)
64 params->Set("stage", url->GetPath()[4]);
65
66 String packageName = HttpUtility::GetLastParameter(params, "package");
67 String stageName = HttpUtility::GetLastParameter(params, "stage");
68
69 if (!ConfigPackageUtility::ValidatePackageName(packageName))
70 return HttpUtility::SendJsonError(response, params, 400, "Invalid package name '" + packageName + "'.");
71
72 if (!ConfigPackageUtility::ValidateStageName(stageName))
73 return HttpUtility::SendJsonError(response, params, 400, "Invalid stage name '" + stageName + "'.");
74
75 std::vector<std::pair<String, bool> > paths = ConfigPackageUtility::GetFiles(packageName, stageName);
76
77 String prefixPath = ConfigPackageUtility::GetPackageDir() + "/" + packageName + "/" + stageName + "/";
78
79 auto generatorFunc = [&prefixPath](const std::pair<String, bool>& kv) -> Value {
80 return new Dictionary{
81 { "type", kv.second ? "directory" : "file" },
82 { "name", kv.first.SubStr(prefixPath.GetLength()) },
83 };
84 };
85
86 Dictionary::Ptr result = new Dictionary{{"results", new ValueGenerator{paths, generatorFunc}}};
87 result->Freeze();
88
89 response.result(http::status::ok);
90 HttpUtility::SendJsonBody(response, params, result, yc);
91}
92
93void ConfigStagesHandler::HandlePost(const HttpApiRequest& request, HttpApiResponse& response)
94{

Callers

nothing calls this directly

Calls 9

ParamsMethod · 0.80
SubStrMethod · 0.80
UrlMethod · 0.45
UserMethod · 0.45
sizeMethod · 0.45
GetPathMethod · 0.45
SetMethod · 0.45
GetLengthMethod · 0.45
FreezeMethod · 0.45

Tested by

no test coverage detected