aboutsummaryrefslogtreecommitdiff
path: root/content/repo_query.js
diff options
context:
space:
mode:
Diffstat (limited to 'content/repo_query.js')
-rw-r--r--content/repo_query.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/content/repo_query.js b/content/repo_query.js
new file mode 100644
index 0000000..b8c8ed9
--- /dev/null
+++ b/content/repo_query.js
@@ -0,0 +1,80 @@
+/**
+ * part of Hachette
+ * Getting available content for site from remote repositories.
+ *
+ * Copyright (C) 2021 Wojtek Kosior
+ * Redistribution terms are gathered in the `copyright' file.
+ */
+
+/*
+ * IMPORTS_START
+ * IMPORT make_ajax_request
+ * IMPORTS_END
+ */
+
+var query_started = false;
+
+var url = undefined;
+var repos = undefined;
+var callback = undefined;
+
+async function query(repo)
+{
+ const [repo_url, data] = repo;
+
+ let response = "Query failed";
+ const query_url = `${repo_url}/query?n=${encodeURIComponent(url)}`;
+
+ try {
+ let xhttp = await make_ajax_request("GET", query_url);
+ if (xhttp.status === 200)
+ response = xhttp.responseText;
+ console.log(xhttp);
+ } catch (e) {
+ console.log(e);
+ }
+
+ callback([repo_url, response]);
+}
+
+function start_query()
+{
+ if (query_started || !url || !repos || !callback)
+ return;
+
+ query_started = true;
+
+ console.log(`about to query ${url} from ${repos}`);
+
+ for (const repo of repos)
+ query(repo);
+}
+
+function set_repo_query_url(_url)
+{
+ url = _url;
+
+ start_query();
+}
+
+function set_repo_query_repos(_repos)
+{
+ repos = _repos;
+
+ start_query();
+}
+
+function set_repo_query_callback(_callback)
+{
+ callback = _callback;
+
+ start_query();
+}
+
+/*
+ * EXPORTS_START
+ * EXPORT set_repo_query_url
+ * EXPORT set_repo_query_repos
+ * EXPORT set_repo_query_callback
+ * EXPORTS_END
+ */