# HG changeset patch # User František Kučera # Date 1648084779 -3600 # Node ID 1a4174f4693a2b9b3cbc96cf8312ff5be91fe7cf # Parent cad9f6d421ee307174933693b25c3871ccedc98b generate random request ID (UUID) if missing diff -r cad9f6d421ee -r 1a4174f4693a nbproject/configurations.xml --- a/nbproject/configurations.xml Thu Mar 24 02:02:48 2022 +0100 +++ b/nbproject/configurations.xml Thu Mar 24 02:19:39 2022 +0100 @@ -86,6 +86,7 @@ ../relpipe-lib-common.cpp/include ../relpipe-lib-cli.cpp/include /usr/include/x86_64-linux-gnu + /usr/include/uuid build/Debug/src @@ -97,8 +98,8 @@ - - + + diff -r cad9f6d421ee -r 1a4174f4693a src/CMakeLists.txt --- a/src/CMakeLists.txt Thu Mar 24 02:02:48 2022 +0100 +++ b/src/CMakeLists.txt Thu Mar 24 02:19:39 2022 +0100 @@ -17,7 +17,7 @@ # Relpipe libraries: INCLUDE(FindPkgConfig) -pkg_check_modules (RELPIPE_LIBS relpipe-lib-reader.cpp relpipe-lib-writer.cpp relpipe-lib-cli.cpp libcurl) +pkg_check_modules (RELPIPE_LIBS relpipe-lib-reader.cpp relpipe-lib-writer.cpp relpipe-lib-cli.cpp libcurl uuid) include_directories(${RELPIPE_LIBS_INCLUDE_DIRS}) link_directories(${RELPIPE_LIBS_LIBRARY_DIRS}) diff -r cad9f6d421ee -r 1a4174f4693a src/HTTPHandler.h --- a/src/HTTPHandler.h Thu Mar 24 02:02:48 2022 +0100 +++ b/src/HTTPHandler.h Thu Mar 24 02:19:39 2022 +0100 @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -119,6 +120,15 @@ request.headers.push_back(convertor.to_bytes(value)); } + relpipe::common::type::StringX generateRequestId() { + char buffer[37]; + uuid_t uuid; + uuid_generate_random(uuid); + // uuid_generate_time(uuid); + uuid_unparse_lower(uuid, buffer); + return convertor.from_bytes(buffer); + } + public: HTTPHandler(shared_ptr relationalWriter, Configuration configuration) : relationalWriter(relationalWriter), configuration(configuration) { @@ -189,6 +199,8 @@ currentAttributeIndex = 0; std::shared_ptr http(HTTPClient::open()); + if (requestId.empty()) requestId = generateRequestId(); + for (const HeaderDefinition& h : requestHeaders) if (h.matches(requestId, convertor.from_bytes(request.url))) appendRequestHeader(h.name, h.value); std::string body;