aboutsummaryrefslogtreecommitdiff
path: root/html/repo_query.js
diff options
context:
space:
mode:
Diffstat (limited to 'html/repo_query.js')
-rw-r--r--html/repo_query.js28
1 files changed, 12 insertions, 16 deletions
diff --git a/html/repo_query.js b/html/repo_query.js
index a4b8890..d2f0e9b 100644
--- a/html/repo_query.js
+++ b/html/repo_query.js
@@ -45,8 +45,7 @@
#FROM common/browser.js IMPORT browser
#FROM html/DOM_helpers.js IMPORT clone_template, Showable
-#FROM common/entities.js IMPORT item_id_string, version_string, \
- is_valid_version
+#FROM common/entities.js IMPORT item_id_string, version_string
#FROM html/install.js IMPORT InstallView
const coll = new Intl.Collator();
@@ -69,6 +68,10 @@ function ResultEntry(repo_entry, mapping_ref) {
this.install_but.addEventListener("click", cb);
}
+const query_schema_url_regex = new RegExp(
+ "^https://hydrilla\\.koszko\\.org/schemas/api_query_result-1\\.([1-9][0-9]*\\.)*schema\\.json$"
+);
+
function RepoEntry(query_view, repo_url) {
Object.assign(this, clone_template("repo_query_single_repo"));
Object.assign(this, {query_view, repo_url});
@@ -91,17 +94,10 @@ function RepoEntry(query_view, repo_url) {
if ("error_json" in response)
throw "Repository's response is not valid JSON :(";
- if (!is_valid_version(response.json.api_schema_version)) {
- var bad_api_ver = "";
- } else if (response.json.api_schema_version > [1]) {
- var bad_api_ver =
- ` (${version_string(response.json.api_schema_version)})`;
- } else {
- var bad_api_ver = false;
- }
-
- if (bad_api_ver !== false)
- throw `Results were served using unsupported Hydrilla API version${bad_api_ver}. You might need to update Haketilo.`;
+ if (!response.json["$schema"])
+ throw "Results were served using a nonconforming response format.";
+ if (!query_schema_url_regex.test(response.json["$schema"]))
+ throw "Results were served using unsupported Hydrilla API version. You might need to update Haketilo.";
/* TODO: here we should perform JSON schema validation! */
@@ -114,7 +110,7 @@ function RepoEntry(query_view, repo_url) {
try {
var results = await query_results();
} catch(e) {
- this.info_span.innerText = e;
+ this.info_div.innerText = e;
return;
}
@@ -122,12 +118,12 @@ function RepoEntry(query_view, repo_url) {
if (this.result_entries.length > 0) {
this.results_list.classList.remove("hide");
- this.info_span.remove();
+ this.info_div.remove();
const to_append = this.result_entries.map(re => re.main_li);
this.results_list.append(...to_append);
} else {
- this.info_span.innerText = "No results :(";
+ this.info_div.innerText = "No results :(";
}
}