"use strict"; function fetchRSS() { if (document.location.protocol == "file:") return; var planet = document.getElementById("planet"); if (planet === null) return; var req = new XMLHttpRequest(); req.open("GET", "https://planet.virt-tools.org/atom.xml"); req.setRequestHeader("Accept", "application/atom+xml, text/xml"); req.onerror = function(e) { if (this.statusText != "") console.error(this); }; req.onload = function(e) { if (this.readyState !== 4) return; if (this.status != 200) { console.error(this.statusText); return; } if (this.responseXML === null) { console.error("Atom response is not an XML"); return; } var dl = document.createElement("dl"); var dateOpts = { day: "numeric", month: "short", year: "numeric"}; var entries = this.responseXML.querySelectorAll("feed > entry:not(:nth-of-type(1n+5))"); entries.forEach(function(e) { var name = e.querySelector("author > name").textContent; var title = e.querySelector("title").textContent; var updated = e.querySelector("updated").textContent; var link = e.querySelector("link").attributes.href.textContent; var a = document.createElement("a"); a.href = link; a.innerText = title; var dt = document.createElement("dt"); dt.appendChild(a); dl.appendChild(dt); var date = new Date(updated); date = date.toLocaleDateString("default", dateOpts); var dd = document.createElement("dd"); dd.innerText = ` by ${name} on ${date}`; dl.appendChild(dd); }); planet.appendChild(dl); }; req.send(); } window.addEventListener("load", function() { fetchRSS() });