do HTTP request for each attribute value v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 06 Mar 2022 19:51:37 +0100
branchv_0
changeset 2 dccedac46e7e
parent 1 ddc12e789d00
child 3 9c710397ced6
do HTTP request for each attribute value
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<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() {