From da511de3ec5ac25bf4bdd587bdc85e22966263c3 Mon Sep 17 00:00:00 2001 From: Marc Parisi Date: Fri, 3 Aug 2018 12:31:21 -0400 Subject: [PATCH] MINIFICPP-583: Allow Expression language to compile if CURL is disabled while also honoring the request to disable CURL functionality --- CMakeLists.txt | 14 +++++----- extensions/expression-language/CMakeLists.txt | 2 ++ extensions/expression-language/Expression.cpp | 10 +++++++ libminifi/test/civetweb-tests/CMakeLists.txt | 2 ++ .../ExpressionLanguageTests.cpp | 27 +++++++++++++++++++ 5 files changed, 47 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c4a76b4d24..3c33509160 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -216,15 +216,13 @@ else() set(UUID_LIBRARIES "uuid") endif() -set (NEEDS_CURL FALSE) - -if(ENABLE_ALL OR (NOT DISABLE_EXPRESSION_LANGUAGE) OR (NOT DISABLE_CURL)) - set(NEEDS_CURL TRUE) -endif() - -if(NEEDS_CURL AND (NOT USE_SYSTEM_CURL)) +if (DISABLE_CURL) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDISABLE_CURL") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDISABLE_CURL") +endif(DISABLE_CURL) +if(NOT DISABLE_CURL AND (NOT USE_SYSTEM_CURL)) message("Using bundled cURL") - + set(CURL_C_FLAGS "-I${OPENSSL_INCLUDE_DIR}") set(CURL_CXX_FLAGS "${CURL_C_FLAGS}") diff --git a/extensions/expression-language/CMakeLists.txt b/extensions/expression-language/CMakeLists.txt index 1b44302d37..cf1afbf249 100644 --- a/extensions/expression-language/CMakeLists.txt +++ b/extensions/expression-language/CMakeLists.txt @@ -60,9 +60,11 @@ target_link_libraries(minifi-expression-language-extensions ${LIBMINIFI} tz) find_package(UUID REQUIRED) target_link_libraries(minifi-expression-language-extensions ${LIBMINIFI} ${UUID_LIBRARIES}) +if (NOT DISABLE_CURL) find_package(CURL REQUIRED) include_directories(${CURL_INCLUDE_DIRS}) target_link_libraries(minifi-expression-language-extensions ${CURL_LIBRARIES}) +endif() find_package(OpenSSL REQUIRED) include_directories(${OPENSSL_INCLUDE_DIR}) target_link_libraries(minifi-expression-language-extensions ${CMAKE_DL_LIBS}) diff --git a/extensions/expression-language/Expression.cpp b/extensions/expression-language/Expression.cpp index 5681c0507a..daeb09f65a 100644 --- a/extensions/expression-language/Expression.cpp +++ b/extensions/expression-language/Expression.cpp @@ -28,7 +28,9 @@ #include #include #include +#ifndef DISABLE_CURL #include +#endif #include #include #include "base64.h" @@ -1345,6 +1347,7 @@ Value expr_unescapeCsv(const std::vector &args) { } Value expr_urlEncode(const std::vector &args) { +#ifndef DISABLE_CURL auto arg_0 = args[0].asString(); CURL *curl = curl_easy_init(); if (curl != nullptr) { @@ -1363,9 +1366,13 @@ Value expr_urlEncode(const std::vector &args) { } else { throw std::runtime_error("Failed to initialize cURL"); } +#else + throw std::runtime_error("Failed to initialize cURL"); +#endif } Value expr_urlDecode(const std::vector &args) { +#ifndef DISABLE_CURL auto arg_0 = args[0].asString(); CURL *curl = curl_easy_init(); if (curl != nullptr) { @@ -1386,6 +1393,9 @@ Value expr_urlDecode(const std::vector &args) { } else { throw std::runtime_error("Failed to initialize cURL"); } +#else + throw std::runtime_error("Failed to initialize cURL"); +#endif } Value expr_base64Encode(const std::vector &args) { diff --git a/libminifi/test/civetweb-tests/CMakeLists.txt b/libminifi/test/civetweb-tests/CMakeLists.txt index eb0fe27311..9a6d894239 100644 --- a/libminifi/test/civetweb-tests/CMakeLists.txt +++ b/libminifi/test/civetweb-tests/CMakeLists.txt @@ -17,6 +17,7 @@ # under the License. # +if(NOT DISABLE_CURL) file(GLOB CIVETWEB_INTEGRATION_TESTS "*.cpp") SET(CIVETWEB-EXTENSIONS_TEST_COUNT 0) FOREACH(testfile ${CIVETWEB_INTEGRATION_TESTS}) @@ -37,3 +38,4 @@ FOREACH(testfile ${CIVETWEB_INTEGRATION_TESTS}) add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${TEST_DIR}) ENDFOREACH() message("-- Finished building ${CIVETWEB-EXTENSIONS_TEST_COUNT} civetweb related test file(s)...") +endif() \ No newline at end of file diff --git a/libminifi/test/expression-language-tests/ExpressionLanguageTests.cpp b/libminifi/test/expression-language-tests/ExpressionLanguageTests.cpp index 4099636868..3ee6ec3286 100644 --- a/libminifi/test/expression-language-tests/ExpressionLanguageTests.cpp +++ b/libminifi/test/expression-language-tests/ExpressionLanguageTests.cpp @@ -1185,6 +1185,7 @@ TEST_CASE("Decode CSV 2", "[expressionDecodeCSV2]") { // NOLINT REQUIRE("\"quoted\"" == expr({flow_file_a}).asString()); } + TEST_CASE("Encode Decode CSV", "[expressionEncodeDecodeCSV]") { // NOLINT auto expr = expression::compile("${message:escapeCsv():unescapeCsv()}"); @@ -1193,6 +1194,7 @@ TEST_CASE("Encode Decode CSV", "[expressionEncodeDecodeCSV]") { // NOLINT REQUIRE("Zero > One < \"two!\" & 'true'" == expr({flow_file_a}).asString()); } +#ifndef DISABLE_CURL TEST_CASE("Encode URL", "[expressionEncodeURL]") { // NOLINT auto expr = expression::compile("${message:urlEncode()}"); @@ -1216,6 +1218,31 @@ TEST_CASE("Encode Decode URL", "[expressionEncodeDecodeURL]") { // NOLINT flow_file_a->addAttribute("message", "some value with spaces"); REQUIRE("some value with spaces" == expr({flow_file_a}).asString()); } +#else +TEST_CASE("Encode URL", "[expressionEncodeURLExcept]") { // NOLINT + auto expr = expression::compile("${message:urlEncode()}"); + + auto flow_file_a = std::make_shared(); + flow_file_a->addAttribute("message", "some value with spaces"); + REQUIRE_THROWS(expr({flow_file_a}).asString()); +} + +TEST_CASE("Decode URL", "[expressionDecodeURLExcept]") { // NOLINT + auto expr = expression::compile("${message:urlDecode()}"); + + auto flow_file_a = std::make_shared(); + flow_file_a->addAttribute("message", "some%20value%20with%20spaces"); + REQUIRE_THROWS(expr({flow_file_a}).asString()); +} + +TEST_CASE("Encode Decode URL", "[expressionEncodeDecodeURLExcept]") { // NOLINT + auto expr = expression::compile("${message:urlEncode():urlDecode()}"); + + auto flow_file_a = std::make_shared(); + flow_file_a->addAttribute("message", "some value with spaces"); + REQUIRE_THROWS(expr({flow_file_a}).asString()); +} +#endif #ifdef EXPRESSION_LANGUAGE_USE_DATE