From 0594ac9ba0f38944ef810b5ac48a2067b1ce5a09 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Tue, 11 Jan 2022 08:00:10 +0000
Subject: [PATCH] Copied libcurl's ftp example

---
 bom.cpp |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 bom.hpp |   10 ++++++++++
 2 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/bom.cpp b/bom.cpp
new file mode 100644
index 0000000..79c7d66
--- /dev/null
+++ b/bom.cpp
@@ -0,0 +1,49 @@
+#include "bom.hpp"
+
+#include "book.hpp"
+#include <cstddef>
+#include <cstdio>
+#include <curl/curl.h>
+#include <stdio.h>
+#include <string>
+#include <unordered_map>
+
+namespace bom
+{
+
+static size_t my_fwrite(void* buffer, size_t size, size_t nmemb, void* stream)
+{
+	FILE* out = (FILE*)stream;
+	if (!out) {
+		out = tmpfile();
+		if (!out) {
+			return -1;
+		}
+	}
+	return fwrite(buffer, size, nmemb, out);
+}
+void updateBom(std::unordered_map<std::string, book::Book>& bs)
+{
+	CURL* curl;
+	CURLcode res;
+	FILE* f{NULL};
+	curl_global_init(CURL_GLOBAL_DEFAULT);
+	curl = curl_easy_init();
+	if (curl) {
+		curl_easy_setopt(curl, CURLOPT_URL,
+		                 "ftp://ftp.bom.gov.au/anon/gen/fwo/IDN60920.xml");
+		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
+		curl_easy_setopt(curl, CURLOPT_WRITEDATA, &f);
+		curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+		res = curl_easy_perform(curl);
+		curl_easy_cleanup(curl);
+		if (CURLE_OK != res) {
+			fprintf(stderr, "Curl failed: %d\n", res);
+		}
+	}
+	if (f) {
+		fclose(f);
+	}
+	curl_global_cleanup();
+}
+} // namespace bom
diff --git a/bom.hpp b/bom.hpp
new file mode 100644
index 0000000..5439ef0
--- /dev/null
+++ b/bom.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "book.hpp"
+#include <string>
+#include <unordered_map>
+
+namespace bom
+{
+void updateBom(std::unordered_map<std::string, book::Book>& bs);
+}

--
Gitblit v1.9.3