JSFiddle - React, Tailwind, and code Playground
HTML
<div id="feedback"></div>
CSS
* {
font-family: Consolas
}
JavaScript
var URL = "https://api.guildwars2.com/v2/skins",
PAGE_SIZE = 200;
var ids = [];
var objects = [];
logLine("Checking " + URL);
// Request ids
$.getJSON(URL, function(ids_) {
ids = ids_;
logLine("Returned ids: " + ids.length);
var numPages = Math.ceil(ids.length / PAGE_SIZE);
var remaining = numPages;
logLine("<span id='progress'></span>");
// Request data
for (var p = 0; p < numPages; p++) {
$.getJSON(URL + "?page_size=" + PAGE_SIZE + "&page=" + p, function (results) {
objects = objects.concat(results);
var progress = (numPages - (remaining - 1)) / numPages;
$("#progress").text("loading " + (progress * 100).toFixed(2) + "%");
if (--remaining == 0) done();
});
}
});
function done() {
logLine("Working ids: " + objects.length);
logLine();
if (objects.length == ids.length) logLine("No problems detected.");
else if (objects.length < ids.length) {
logLine("Missing ids:");
// Gather all object ids in an array
var objectIds = [];
for (var i = 0; i < objects.length; i++)
objectIds.push(objects[i].id);
// Check for missing ids
for (var i = 0; i < ids.length; i++) {
if (objectIds.indexOf(ids[i]) == -1) logLine("<a href='" + URL + "/" + ids[i] + "'>#" + ids[i] + "</a>");
}
}
logLine();
logLine("--- end ---");
}
function logLine(str) {
$("#feedback").append((str || "") + "<br>");
}