File: examplen.js

Recommend this page to a friend!
  Classes of Vallo Reima   JS Merge XML   examplen.js   Download  
File: examplen.js
Role: Example script
Content type: text/plain
Description: Example script
Class: JS Merge XML
Merge XML documents from strings or DOM objects
Author: By
Last change: Update of examplen.js
Date: 2 years ago
Size: 2,287 bytes
 

Contents

Class file image Download
/** * JS MergeXML NodeJS usage sample * server-side component * * @package MergeXML * @author Vallo Reima * @copyright (C)2019 */ const http = require('http'); const fs = require('fs'); //read/remove uploaded files const formidable = require('formidable'); //to process the uploads const MergeXML = require('./mergexml.js'); //loading the class /* const oMX = new (require('./mergexml.js'))(); //load and instantiate */ const hostname = '127.0.0.1'; const port = 3000; const template = 'examplen.htm'; const server = http.createServer((req, res) => { if (req.method === 'POST') { //merge uploaded let form = new formidable.IncomingForm(); form.multiples = true; //multi-selected files form.parse(req, (err, fields, files) => { //process form data let f = Object.keys(files)[0]; //1st property is files[] let dat = Merge(files[f]); Respond(res, dat); //display result }); } else if (req.url === '/') { fs.readFile(template, (err, data) => { //get template html if (!err && data) { //obtained let dat = data.toString().replace('%url%', `http://${hostname}:${port}`); //set action url Respond(res, dat, 'html'); //launch the page } else { Respond(res, `Cannot read '${template}'`); } }); } }).listen(port, hostname, () => { console.log(`NodeJS is running at http://${hostname}:${port}`); }); /** * send response * @param {object} res * @param {string} type plain|html * @param {string} data */ const Respond = function (res, data, type = 'plain') { res.writeHead(200, {'Content-Type': `text/${type}`, 'Content-Length': data.length}); res.write(data); res.end(); }; /** * merge uploaded files and remove * @param {array} files * @returns {string} */ const Merge = function (files) { let oMX = new MergeXML(); /* oMX.Init(); //using global instance */ for (let i = 0; i < files.length; i++) { let dat = fs.readFileSync(files[i].path).toString(); fs.unlinkSync(files[i].path); if (!oMX.AddSource(dat)) { break; } } var rlt; if (oMX.error.code !== '') { rlt = oMX.error.text; /* no DOM support */ } else if (oMX.count < 2) { rlt = 'Minimum 2 files are required'; } else { rlt = oMX.Get(1); } return rlt; };