diff --git a/src/APConfig.cpp b/src/APConfig.cpp index 764d3a8..a7b2abc 100644 --- a/src/APConfig.cpp +++ b/src/APConfig.cpp @@ -49,42 +49,42 @@ namespace OpenWifi { return true; } - bool APConfig::merge(const Poco::JSON::Object::Ptr & A, const Poco::JSON::Object::Ptr & B, Poco::JSON::Object &C) { + bool APConfig::merge(const Poco::JSON::Object::Ptr & A, const Poco::JSON::Object::Ptr & B, Poco::JSON::Object::Ptr &C) { for(const auto &i:*A) { const std::string & K = i.first; - // std::cout << "KEY: " << K << std::endl; + // std::cout << "KEY: " << K << std::endl; if(B->has(K)) { if(A->isArray(K)) { - // std::cout << "ISARRAY" << std::endl; + // std::cout << "ISARRAY" << std::endl; if(B->isArray(K)) { Poco::JSON::Array Arr; auto AR1=A->getArray(K); auto AR2=B->getArray(K); mergeArray(K,AR1,AR2,Arr); - C.set(K,Arr); + C->set(K,Arr); } else { - C.set(K,A->getArray(K)); + C->set(K,A->getArray(K)); } } else if(A->isObject(K) && B->isObject(K)) { - // std::cout << "ISOBJECT" << std::endl; - Poco::JSON::Object R; + // std::cout << "ISOBJECT" << std::endl; + Poco::JSON::Object::Ptr R; merge(A->getObject(K),B->getObject(K),R); - C.set(K,R); + C->set(K,R); } else { - C.set(K,i.second); + C->set(K,i.second); } } else { - C.set(K,i.second); + C->set(K,i.second); } } for(const auto &i:*B) { const std::string & K = i.first; if(!A->has(K)) - C.set(K,i.second); + C->set(K,i.second); } return true; } @@ -118,19 +118,20 @@ namespace OpenWifi { // globals // unit - Poco::JSON::Object CFG; + Poco::JSON::Object::Ptr CFG; for(const auto &i:Config_) { Poco::JSON::Parser P; auto O = P.parse(i.configuration).extract(); - for(const auto &j:*O) { - CFG.set(j.first,j.second); - } + Poco::JSON::Object::Ptr Result; + merge(CFG, O, Result); + CFG = Result; } - Configuration = CFG; + Configuration = *CFG; if(Config_.empty()) return false; + return true; } diff --git a/src/APConfig.h b/src/APConfig.h index 85bdf16..414704c 100644 --- a/src/APConfig.h +++ b/src/APConfig.h @@ -34,7 +34,7 @@ namespace OpenWifi { bool FindRadio(const std::string &Band, const Poco::JSON::Array::Ptr &Arr, Poco::JSON::Object::Ptr & Radio); bool mergeArray(const std::string &K, const Poco::JSON::Array::Ptr &A , const Poco::JSON::Array::Ptr &B, Poco::JSON::Array &Arr); - bool merge(const Poco::JSON::Object::Ptr & A, const Poco::JSON::Object::Ptr & B, Poco::JSON::Object &C); + bool merge(const Poco::JSON::Object::Ptr & A, const Poco::JSON::Object::Ptr & B, Poco::JSON::Object::Ptr &C); }; } diff --git a/test_scripts/curl/cli b/test_scripts/curl/cli index d78364d..74558b3 100755 --- a/test_scripts/curl/cli +++ b/test_scripts/curl/cli @@ -181,7 +181,7 @@ gettag() { } addtag() { - payload="{ \"name\" : \"$1\",\"entity\" : \"$2\", \"serialNumber\" : \"$1\", \"deviceType\" : \"linksys_ea8300\" }"; + payload="{ \"name\" : \"$1\", \"serialNumber\" : \"$1\", \"deviceType\" : \"linksys_ea8300\" }"; curl ${FLAGS} -X POST "https://${OWPROV}/api/v1/inventory/1" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${token}" \ @@ -372,7 +372,7 @@ case "$1" in "tree") login; tree ; logout;; "importtree") login; importtree $2; logout;; "deviceconfig") login; deviceconfig "$2"; logout;; - "addtag") login; addtag $2 $3; logout;; + "addtag") login; addtag "$2"; logout;; "unassigntag") login; unassigntag $2; logout;; "addunassignedtag") login; addunassignedtag $2 ; logout;; "getunassignedtags") login; getunassignedtags ; logout;;