diff --git a/CMakeLists.txt b/CMakeLists.txt index 821c84e..572123b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,7 @@ option(BUILD_UNIT_TESTS "Build the unit tests" OFF) option(BUILD_INTEGRATION_TESTS "Build the unit tests" OFF) option(ENABLE_COVERAGE "Enabling coverage" OFF) option(BUILD_BINDINGS "Build Python Bindings" OFF) +option(BUILD_SHARED_LIBS "Build Shared Library " ON) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 183f4b1..e5a29d2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,7 +21,12 @@ find_package(rabbitmq-c REQUIRED) file(GLOB_RECURSE MQSS_CLIENT_SOURCES **.cpp) -add_library(mqss_client SHARED ${MQSS_CLIENT_SOURCES}) +if(BUILD_SHARED_LIBS) + add_library(mqss_client SHARED ${MQSS_CLIENT_SOURCES}) +else() + add_library(mqss_client STATIC ${MQSS_CLIENT_SOURCES}) + set_target_properties(mqss_client PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() target_include_directories( mqss_client PUBLIC $ diff --git a/src/c_bindings/job.cpp b/src/c_bindings/job.cpp index c26f40e..1e3f08e 100644 --- a/src/c_bindings/job.cpp +++ b/src/c_bindings/job.cpp @@ -22,6 +22,8 @@ #include "common.h" #include "mqss/job.h" +#include + using namespace mqss::client; MQSSJobRef MQSSClientCreateCircuitJob(char* circuit, char* circuitFormat, diff --git a/src/client.cpp b/src/client.cpp index 4cf6ed4..704a3a8 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -95,7 +95,12 @@ std::string MQSSClient::getJobStatus(const JobRequest& job) { return ""; nlohmann::json parsed = nlohmann::json::parse(resp); - return parsed.value("status", ""); + + if (parsed.contains("status") && parsed["status"].is_string()) { + return parsed["status"].get(); + } + + return ""; } std::unique_ptr MQSSClient::getJobResult(const JobRequest& job, diff --git a/src/clients/rest_client.cpp b/src/clients/rest_client.cpp index ca2ea2b..319bcd9 100644 --- a/src/clients/rest_client.cpp +++ b/src/clients/rest_client.cpp @@ -62,6 +62,7 @@ std::string MQSSRestClient::get(const std::string& path) { curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&response); curl_easy_setopt(curl, CURLOPT_URL, (mUrl + path).c_str()); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, pHeaders); + curl_easy_setopt(curl, CURLOPT_CAINFO, std::getenv("CURL_CA_BUNDLE")); CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) @@ -91,6 +92,7 @@ std::string MQSSRestClient::post(const std::string& path, curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload.c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); + curl_easy_setopt(curl, CURLOPT_CAINFO, std::getenv("CURL_CA_BUNDLE")); CURLcode res = curl_easy_perform(curl); curl_easy_cleanup(curl); @@ -114,6 +116,7 @@ void MQSSRestClient::del(const std::string& path) { curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&response); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE"); + curl_easy_setopt(curl, CURLOPT_CAINFO, std::getenv("CURL_CA_BUNDLE")); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, pHeaders);