[libvirt] [PATCH v3 1/2] docs: Use our own implementation for fetching the RSS data

Martin Kletzander mkletzan at redhat.com
Thu Jun 20 13:00:49 UTC 2019


It will not be executed when the page is loaded locally.  It needs
planet.virt-tools.org to supply the right headers (which it does now).

Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
---
 docs/index.html.in | 15 ++---------
 docs/js/main.js    | 62 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+), 13 deletions(-)

diff --git a/docs/index.html.in b/docs/index.html.in
index f593445d061d..1e16f299c8fd 100644
--- a/docs/index.html.in
+++ b/docs/index.html.in
@@ -2,21 +2,10 @@
 <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
-    <script type="text/javascript" src="js/jquery-3.1.1.min.js"> </script>
-    <script type="text/javascript" src="js/moment.min.js"> </script>
-    <script type="text/javascript" src="js/jquery.rss.min.js"> </script>
-
     <script type="text/javascript">
       <!--
-      jQuery(function($) {
-        $("#planet").rss("http://planet.virt-tools.org/atom.xml", {
-          ssl: true,
-          layoutTemplate: '<dl>{entries}</dl>',
-          entryTemplate: '<dt><a href="{url}">{title}</a></dt><dd>by {author} on {date}</li>',
-          dateFormat: 'DD MMM YYYY'
-        })
-      })
-      // -->
+      window.addEventListener("load", function() { fetchRSS() });
+  // -->
     </script>
   </head>
   <body class="index">
diff --git a/docs/js/main.js b/docs/js/main.js
index cb424dd72fb3..d1c20742a331 100644
--- a/docs/js/main.js
+++ b/docs/js/main.js
@@ -77,3 +77,65 @@ function advancedsearch(e) {
 
     return false;
 }
+
+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 uri = e.querySelector("author > uri").textContent;
+
+            var a = document.createElement("a");
+            a.href = uri;
+            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();
+}
-- 
2.22.0




More information about the libvir-list mailing list