using namespace icinga;
-REGISTER_URLHANDLER("/v1", CreateObjectHandler);
+REGISTER_URLHANDLER("/v1/objects", CreateObjectHandler);
bool CreateObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& request, HttpResponse& response)
{
return false;
}
- if (request.RequestUrl->GetPath().size() < 3) {
+ if (request.RequestUrl->GetPath().size() < 4) {
HttpUtility::SendJsonError(response, 400, "Object name is missing.");
return true;
}
- Type::Ptr type = FilterUtility::TypeFromPluralName(request.RequestUrl->GetPath()[1]);
+ Type::Ptr type = FilterUtility::TypeFromPluralName(request.RequestUrl->GetPath()[2]);
if (!type) {
HttpUtility::SendJsonError(response, 403, "Erroneous type was supplied.");
return true;
}
- String name = request.RequestUrl->GetPath()[2];
+ String name = request.RequestUrl->GetPath()[3];
Dictionary::Ptr params = HttpUtility::FetchRequestParameters(request);
Array::Ptr templates = params->Get("templates");
Dictionary::Ptr attrs = params->Get("attrs");
using namespace icinga;
-REGISTER_URLHANDLER("/v1", DeleteObjectHandler);
+REGISTER_URLHANDLER("/v1/objects", DeleteObjectHandler);
bool DeleteObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& request, HttpResponse& response)
{
return false;
}
- if (request.RequestUrl->GetPath().size() < 2) {
+ if (request.RequestUrl->GetPath().size() < 3) {
String path = boost::algorithm::join(request.RequestUrl->GetPath(), "/");
HttpUtility::SendJsonError(response, 404, "The requested path is too long to match any config tag requests.");
return true;
}
- Type::Ptr type = FilterUtility::TypeFromPluralName(request.RequestUrl->GetPath()[1]);
+ Type::Ptr type = FilterUtility::TypeFromPluralName(request.RequestUrl->GetPath()[2]);
if (!type) {
HttpUtility::SendJsonError(response, 400, "Erroneous type was supplied.");
QueryDescription qd;
qd.Types.insert(type->GetName());
+ qd.Permission = "objects/delete/" + type->GetName();
Dictionary::Ptr params = HttpUtility::FetchRequestParameters(request);
params->Set("type", type->GetName());
- if (request.RequestUrl->GetPath().size() >= 3) {
+ if (request.RequestUrl->GetPath().size() >= 4) {
String attr = type->GetName();
boost::algorithm::to_lower(attr);
- params->Set(attr, request.RequestUrl->GetPath()[2]);
+ params->Set(attr, request.RequestUrl->GetPath()[3]);
}
std::vector<Value> objs = FilterUtility::GetFilterTargets(qd, params);
using namespace icinga;
-REGISTER_URLHANDLER("/v1", ModifyObjectHandler);
+REGISTER_URLHANDLER("/v1/objects", ModifyObjectHandler);
bool ModifyObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& request, HttpResponse& response)
{
return false;
}
- if (request.RequestUrl->GetPath().size() < 2)
+ if (request.RequestUrl->GetPath().size() < 3)
return false;
Type::Ptr type = FilterUtility::TypeFromPluralName(request.RequestUrl->GetPath()[1]);
QueryDescription qd;
qd.Types.insert(type->GetName());
+ qd.Permission = "objects/modify/" + type->GetName();
Dictionary::Ptr params = HttpUtility::FetchRequestParameters(request);
params->Set("type", type->GetName());
- if (request.RequestUrl->GetPath().size() >= 3) {
+ if (request.RequestUrl->GetPath().size() >= 4) {
String attr = type->GetName();
boost::algorithm::to_lower(attr);
- params->Set(attr, request.RequestUrl->GetPath()[2]);
+ params->Set(attr, request.RequestUrl->GetPath()[3]);
}
std::vector<Value> objs = FilterUtility::GetFilterTargets(qd, params);
using namespace icinga;
-REGISTER_URLHANDLER("/v1", ObjectQueryHandler);
+REGISTER_URLHANDLER("/v1/objects", ObjectQueryHandler);
bool ObjectQueryHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& request, HttpResponse& response)
{
if (request.RequestMethod != "GET")
return false;
- if (request.RequestUrl->GetPath().size() < 2)
+ if (request.RequestUrl->GetPath().size() < 3)
return false;
- Type::Ptr type = FilterUtility::TypeFromPluralName(request.RequestUrl->GetPath()[1]);
+ Type::Ptr type = FilterUtility::TypeFromPluralName(request.RequestUrl->GetPath()[2]);
if (!type)
return false;
params->Set("type", type->GetName());
- if (request.RequestUrl->GetPath().size() >= 3) {
+ if (request.RequestUrl->GetPath().size() >= 4) {
String attr = type->GetName();
boost::algorithm::to_lower(attr);
- params->Set(attr, request.RequestUrl->GetPath()[2]);
+ params->Set(attr, request.RequestUrl->GetPath()[3]);
}
std::vector<Value> objs = FilterUtility::GetFilterTargets(qd, params);