--- 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<relpipe::writer::RelationalWriter> relationalWriter, Configuration configuration) : relationalWriter(relationalWriter), configuration(configuration) {
@@ -62,16 +72,24 @@
void startRelation(relpipe::common::type::StringX name, std::vector<relpipe::reader::handlers::AttributeMetadata> 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() {