From be81f871540510be7211b08bd6bf720316bd8092 Mon Sep 17 00:00:00 2001 From: Henry Winkel Date: Fri, 27 Oct 2023 10:44:57 +0200 Subject: [PATCH] ADD: changed the way of retreiving the result from the curl request --- CMakeLists.txt | 2 -- include/kubecontrol/KubePod.hpp | 1 - include/kubecontrol/WriterMemoryClass.hpp | 38 ----------------------- src/kubecontrol/KubePod.cpp | 35 ++++++++------------- src/kubecontrol/PodController.cpp | 16 +++++----- src/kubecontrol/kubecontrol.cpp | 35 ++++++++++----------- tests/test_podInfo.cpp | 5 +-- 7 files changed, 40 insertions(+), 92 deletions(-) delete mode 100644 include/kubecontrol/WriterMemoryClass.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 3997d85..539a57d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,8 +59,6 @@ ENDIF() include/kubecontrol/PodController.hpp src/kubecontrol/PodController.cpp - include/kubecontrol/WriterMemoryClass.hpp - include/kubecontrol/Utils.hpp src/kubecontrol/Utils.cpp diff --git a/include/kubecontrol/KubePod.hpp b/include/kubecontrol/KubePod.hpp index 57dcdd5..b79269f 100644 --- a/include/kubecontrol/KubePod.hpp +++ b/include/kubecontrol/KubePod.hpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include diff --git a/include/kubecontrol/WriterMemoryClass.hpp b/include/kubecontrol/WriterMemoryClass.hpp deleted file mode 100644 index 9ce957f..0000000 --- a/include/kubecontrol/WriterMemoryClass.hpp +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include - -#define MAX_FILE_LENGTH 200000 - -class WriterMemoryClass -{ -public: - - // Callback must be declared static, otherwise it won't link... - size_t WriteMemoryCallback(char* ptr, size_t size, size_t nmemb) - { - str_pBuffer.erase(); - str_pBuffer = std::string(ptr); - - return str_pBuffer.size(); - }; - - std::string getResponse() - { - // return std::string(m_pBuffer); - return str_pBuffer; - } - - void print() - { - std::cout << "Size: " << str_pBuffer.size() << std::endl; - std::cout << "Content: " << std::endl << str_pBuffer << std::endl; - } - - // Public member vars - private: - std::string str_pBuffer; -}; \ No newline at end of file diff --git a/src/kubecontrol/KubePod.cpp b/src/kubecontrol/KubePod.cpp index b0bddf9..a16f455 100644 --- a/src/kubecontrol/KubePod.cpp +++ b/src/kubecontrol/KubePod.cpp @@ -198,11 +198,9 @@ namespace kubecontrol curlpp::Cleanup cleaner; curlpp::Easy request; - WriterMemoryClass mWriterChunk; - curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); - curlpp::options::WriteFunction *test = new curlpp::options::WriteFunction(functor); - request.setOpt(test); - + std::stringstream result; + request.setOpt(cURLpp::Options::WriteStream(&result)); + request.setOpt(new curlpp::options::HttpHeader(headers)); request.setOpt(new curlpp::options::Url(curlURL)); @@ -226,7 +224,7 @@ namespace kubecontrol request.perform(); request.reset(); - std::string response = mWriterChunk.getResponse(); + std::string response = result.str(); InfoPod.update(response); while (InfoPod.Status != "Running" && InfoPod.Status != "Succeeded") { @@ -252,10 +250,8 @@ namespace kubecontrol curlpp::Cleanup cleaner; curlpp::Easy request; - WriterMemoryClass mWriterChunk; - curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); - curlpp::options::WriteFunction *writefunction = new curlpp::options::WriteFunction(functor); - request.setOpt(writefunction); + std::stringstream result; + request.setOpt(cURLpp::Options::WriteStream(&result)); request.setOpt(new curlpp::options::HttpHeader(headers)); request.setOpt(new curlpp::options::Url(curlURL)); @@ -269,7 +265,7 @@ namespace kubecontrol request.perform(); - auto response = mWriterChunk.getResponse(); + auto response = result.str(); LOG_S(INFO)< 0) @@ -297,10 +293,8 @@ namespace kubecontrol curlpp::Cleanup cleaner; curlpp::Easy request; - WriterMemoryClass mWriterChunk; - curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); - curlpp::options::WriteFunction *writefunction = new curlpp::options::WriteFunction(functor); - request.setOpt(writefunction); + std::stringstream result; + request.setOpt(cURLpp::Options::WriteStream(&result)); request.setOpt(new curlpp::options::HttpHeader(headers)); request.setOpt(new curlpp::options::Url(curlURL)); @@ -314,7 +308,7 @@ namespace kubecontrol request.perform(); - auto response = mWriterChunk.getResponse(); + auto response = result.str(); return response; @@ -334,12 +328,9 @@ namespace kubecontrol curlpp::Cleanup cleaner; curlpp::Easy request; - WriterMemoryClass mWriterChunk; + std::stringstream result; + request.setOpt(cURLpp::Options::WriteStream(&result)); - curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); - - curlpp::options::WriteFunction *test = new curlpp::options::WriteFunction(functor); - request.setOpt(test); request.setOpt(new curlpp::options::HttpHeader(headers)); @@ -349,7 +340,7 @@ namespace kubecontrol request.perform(); - return mWriterChunk.getResponse(); + return result.str(); } diff --git a/src/kubecontrol/PodController.cpp b/src/kubecontrol/PodController.cpp index 8c7b91b..b9017b1 100644 --- a/src/kubecontrol/PodController.cpp +++ b/src/kubecontrol/PodController.cpp @@ -290,12 +290,11 @@ namespace kubecontrol auto request = std::make_unique(); - WriterMemoryClass mWriterChunk; - curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); - curlpp::options::WriteFunction *test = new curlpp::options::WriteFunction(functor); - - request->setOpt(test); + // request->setOpt(test); + std::stringstream result; + request->setOpt(cURLpp::Options::WriteStream(&result)); + request->setOpt(new curlpp::options::HttpHeader(headers)); request->setOpt(new curlpp::options::Url(curlURL)); @@ -306,9 +305,10 @@ namespace kubecontrol request->perform(); - std::string response = mWriterChunk.getResponse(); - - return response; + + // std::string response = mWriterChunk.getResponse(); + std::string response = result.str(); + return response; } void PodController::performForceStopRequest(std::string uuid) diff --git a/src/kubecontrol/kubecontrol.cpp b/src/kubecontrol/kubecontrol.cpp index 9dc5669..00c32b0 100644 --- a/src/kubecontrol/kubecontrol.cpp +++ b/src/kubecontrol/kubecontrol.cpp @@ -24,7 +24,6 @@ #include -#include #include #include @@ -54,13 +53,10 @@ namespace kubecontrol curlpp::Cleanup cleaner; curlpp::Easy request; - WriterMemoryClass mWriterChunk; + + std::stringstream result; - curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); - - curlpp::options::WriteFunction *test = new curlpp::options::WriteFunction(functor); - request.setOpt(test); - + request.setOpt(cURLpp::Options::WriteStream(&result)); request.setOpt(new curlpp::options::HttpHeader(headers)); request.setOpt(new curlpp::options::Url(curlURL)); @@ -73,7 +69,7 @@ namespace kubecontrol request.perform(); - auto response = mWriterChunk.getResponse(); + auto response = result.str(); @@ -96,11 +92,13 @@ namespace kubecontrol curlpp::Cleanup cleaner; curlpp::Easy request; - WriterMemoryClass mWriterChunk; - curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); - curlpp::options::WriteFunction *test = new curlpp::options::WriteFunction(functor); - request.setOpt(test); - + // WriterMemoryClass mWriterChunk; + // curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); + // curlpp::options::WriteFunction *test = new curlpp::options::WriteFunction(functor); + // request.setOpt(test); + std::stringstream result; + request.setOpt(cURLpp::Options::WriteStream(&result)); + request.setOpt(new curlpp::options::HttpHeader(headers)); request.setOpt(new curlpp::options::Url(curlURL)); @@ -148,7 +146,7 @@ namespace kubecontrol request.perform(); - auto response = mWriterChunk.getResponse(); + auto response = result.str(); LOG_S(INFO)<