internet.js
[edit | edit source]/* This program demonstrates webpage, XML, and JSON processing. Input: None Output: XML and JSON sample data. References: https://www.mediawiki.org/wiki/Manual:Parameters_to_Special:Export https://www.twilio.com/blog/2017/08/http-requests-in-node-js.html https://nodejs.dev/learn/make-an-http-post-request-using-nodejs https://www.npmjs.com/package/xml-js */ consthttps=require("https"); constxmljs=require("xml-js"); if(typeofmodule!="undefined"&&!module.parent){ main(); } /** * Runs main program logic. */ asyncfunctionmain(){ try{ leturl="https://www.w3schools.com/xml/note.xml"; lettext=awaitgetWebpage(url); displayUrl(url,text); displayXmltree(text) url="https://en.wikiversity.org/wiki/Special:Export"; parameters={"pages":"Applied Programming","limit":"1"}; text=awaitpostWebpage(url,parameters); displayUrl(url,text); url="https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/en.wikiversity/all-access/user/"+ "Applied_Programming%2fInternet_Data"+ "/daily/2018030100/2018033100"; text=awaitgetWebpage(url); displayUrl(url,text); displayWikistats(text); }catch(error){ console.error(error) } } /** * Gets a webpage. * * @param {string} url to retrieve * @returns {string} webpage text */ asyncfunctiongetWebpage(url){ returnnewPromise(function(resolve,reject){ letrequest=https.get(url,(response)=>{ letdata=""; response.on("data",(chunk)=>{ data+=chunk; }); response.on("end",()=>{ resolve(data); }); }).on("error",(error)=>{ reject(error); }); request.end(); }); } /** * Posts to a webpage. * * @param {string} url to retrieve * @param {object} parameters to post * @returns {string} webpage response */ asyncfunctionpostWebpage(url,parameters){ returnnewPromise(function(resolve,reject){ parameters["method"]="POST"; letrequest=https.request(url,parameters,(response)=>{ letdata=""; response.on("data",(chunk)=>{ data+=chunk; }); response.on("end",()=>{ resolve(data); }); }).on("error",(error)=>{ reject(error); }); request.end(); }); } /** * Displays a url and text. * * @param {string} url to display * @param {string} text to display */ functiondisplayUrl(url,text){ console.log(url); console.log(text); console.log(""); } /** * Displays an XML tree. * * @param {string} text to display */ functiondisplayXmltree(text){ text=text.replace(/<\?xml.+?>\s?/,""); constjson=xmljs.xml2json(text,{compact:true,spaces:4}); console.log(json); } /** * Displays timestamp and page views for Wikimedia REST API statistics in JSON format. * * @param {string} text retrieved from /wikimedia.org/api/rest_v1/metrics */ functiondisplayWikistats(text){ letobject=JSON.parse(text); for(itemofobject.items){ console.log(`${item["timestamp"]}: ${item["views"]}`); } console.log(""); }
Try It
[edit | edit source]Copy and paste the code above into one of the following free online development environments or use your own JavaScript compiler / interpreter / IDE.
- Chapman.edu: Online JavaScript Interpreter
- CodeChef
- GDB Online
- Ideone
- JS.do
- paiza.IO
- PythonTutor
- repl.it
