# HG changeset patch # User František Kučera # Date 1646592697 -3600 # Node ID dccedac46e7e3d75b7749e9b4924ee34830f0196 # Parent ddc12e789d001699a0b340eaf56b519487f63dbe do HTTP request for each attribute value diff -r ddc12e789d00 -r dccedac46e7e src/HTTPHandler.h --- a/src/HTTPHandler.h Sun Mar 06 18:01:15 2022 +0100 +++ b/src/HTTPHandler.h Sun Mar 06 19:51:37 2022 +0100 @@ -51,6 +51,16 @@ size_t currentAttributeIndex = 0; size_t currentRecordNumber = 1; + void writeCallback(std::string value) { + relationalWriter->writeAttribute(L"got response: " + convertor.from_bytes(value)); + } + + static uint writeCurlCallback(char* in, uint size, uint nmemb, HTTPHandler* instance) { + uint r = size * nmemb; + instance->writeCallback(std::string(in, r)); + return r; + } + public: HTTPHandler(shared_ptr relationalWriter, Configuration configuration) : relationalWriter(relationalWriter), configuration(configuration) { @@ -62,16 +72,24 @@ void startRelation(relpipe::common::type::StringX name, std::vector attributes) override { - relationalWriter->startRelation(name + L"_curl_info",{ - {L"version", relpipe::writer::TypeId::STRING} + relationalWriter->startRelation(name + L"_curl",{ + {L"value", relpipe::writer::TypeId::STRING} }, true); - relationalWriter->writeAttribute(convertor.from_bytes(curl_version())); + relationalWriter->writeAttribute(L"curl version = " + convertor.from_bytes(curl_version())); } void attribute(const relpipe::common::type::StringX& value) override { + std::string url = convertor.to_bytes(value); + + CURL* curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, this); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCurlCallback); + curl_easy_perform(curl); + curl_easy_cleanup(curl); } void endOfPipe() {