// started on main page load function init() { // Connect "Enter" in text field with Button click var url = document.getElementById("url"); url.addEventListener("keyup", function(event) { if (event.keyCode === 13) { event.preventDefault(); on_start(); } }); } function set_status(message) { if (message == "") message = " "; document.getElementById("status").innerHTML = message; } // started on button click: get filename function on_start() { var xhr = new XMLHttpRequest(); // run on data received back xhr.onreadystatechange = function() { if (this.readyState != 4) { return; } if (this.status != 200) { set_status("Server Error while retrieving filename, " + filename + ", status: " + this.status + " " + this.statusText); return; } var filename = this.responseText; get_file(filename); } var parser = new DOMParser(); var xmlDocument = parser.parseFromString("", "text/xml"); var requestElement = xmlDocument.getElementsByTagName("request")[0]; var commandElement = xmlDocument.createElement("command"); commandElement.appendChild(document.createTextNode("getfilename")); requestElement.appendChild(commandElement); var urlElement = xmlDocument.createElement("url"); urlElement.appendChild(document.createTextNode(document.getElementById("url").value)); requestElement.appendChild(urlElement); var formatElement = xmlDocument.createElement("format"); formatElement.appendChild(document.createTextNode(document.getElementById("mp3").checked ? "mp3" : "mp4")); requestElement.appendChild(formatElement); xhr.open("POST", "whiteboard.fcgi", true); xhr.setRequestHeader("Content-type", "text/xml"); xhr.responseType = 'text'; xhr.send(xmlDocument); set_status("Please wait while retrieving filename..."); } // started on button click: get file function get_file(filename) { var xhr = new XMLHttpRequest(); // run on data received back xhr.onreadystatechange = function() { if (this.readyState == 3) { set_status("Please wait while downloading " + filename + " ..."); return; } if (this.readyState != 4) { return; } if (this.status != 200) { set_status("Server Error while retrieving " + filename + ", status: " + this.status + " " + this.statusText); return; } var a = document.getElementById("download-a"); a.setAttribute("download", filename); var file = new Blob([this.response]); a.href = window.URL.createObjectURL(file); a.click(); set_status(""); // OK } var parser = new DOMParser(); var xmlDocument = parser.parseFromString("", "text/xml"); var requestElement = xmlDocument.getElementsByTagName("request")[0]; var commandElement = xmlDocument.createElement("command"); commandElement.appendChild(document.createTextNode("getfile")); requestElement.appendChild(commandElement); var urlElement = xmlDocument.createElement("url"); urlElement.appendChild(document.createTextNode(document.getElementById("url").value)); requestElement.appendChild(urlElement); var formatElement = xmlDocument.createElement("format"); formatElement.appendChild(document.createTextNode(document.getElementById("mp3").checked ? "mp3" : "mp4")); requestElement.appendChild(formatElement); xhr.open("POST", "whiteboard.fcgi", true); xhr.setRequestHeader("Content-type", "text/xml"); xhr.responseType = 'blob'; xhr.send(xmlDocument); set_status("Please wait while server prepares " + filename + " ..."); }