]> granicus.if.org Git - icinga2/commitdiff
Move /v1/<type> to /v1/objects/<type>
authorGunnar Beutner <gunnar@beutner.name>
Mon, 28 Sep 2015 06:37:50 +0000 (08:37 +0200)
committerGunnar Beutner <gunnar@beutner.name>
Mon, 28 Sep 2015 06:39:56 +0000 (08:39 +0200)
refs #10212

lib/remote/createobjecthandler.cpp
lib/remote/deleteobjecthandler.cpp
lib/remote/modifyobjecthandler.cpp
lib/remote/objectqueryhandler.cpp

index fa1c3f2efc0a212ace886698cdc9311dc5250d2f..a1d4d6d962270749d16275e6fc568ef961e13627 100644 (file)
@@ -27,7 +27,7 @@
 
 using namespace icinga;
 
-REGISTER_URLHANDLER("/v1", CreateObjectHandler);
+REGISTER_URLHANDLER("/v1/objects", CreateObjectHandler);
 
 bool CreateObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& request, HttpResponse& response)
 {
@@ -36,19 +36,19 @@ bool CreateObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r
                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");
index f4b89d28436c1681692bfac51cc4d279785bcdd4..6e043091e7768a796e34bd2d20c8796da5ba42c9 100644 (file)
@@ -30,7 +30,7 @@
 
 using namespace icinga;
 
-REGISTER_URLHANDLER("/v1", DeleteObjectHandler);
+REGISTER_URLHANDLER("/v1/objects", DeleteObjectHandler);
 
 bool DeleteObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& request, HttpResponse& response)
 {
@@ -39,13 +39,13 @@ bool DeleteObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r
                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.");
@@ -54,15 +54,16 @@ bool DeleteObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r
 
        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);
index 239578ce32e5bb289e616a5014b9c4677e0fe1c5..b01810fe6995968c0b4308b8fe93926100e732bc 100644 (file)
@@ -28,7 +28,7 @@
 
 using namespace icinga;
 
-REGISTER_URLHANDLER("/v1", ModifyObjectHandler);
+REGISTER_URLHANDLER("/v1/objects", ModifyObjectHandler);
 
 bool ModifyObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& request, HttpResponse& response)
 {
@@ -37,7 +37,7 @@ bool ModifyObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r
                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]);
@@ -47,15 +47,16 @@ bool ModifyObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r
 
        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);
index 31cd6ea96c145c6e6f336e0a11dfa130d151b619..909dabfb2b6d7a1c74f3b4ab69ba12826f74eda2 100644 (file)
 
 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;
@@ -60,10 +60,10 @@ bool ObjectQueryHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& re
 
        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);