var http = require('http'); const fs = require('fs'); var url = require('url'); var path = require('path'); var StringDecoder = require('string_decoder').StringDecoder; var exec = require("child_process").exec; var Promise= require('promise'); var mimeTypes = { "html": "text/html", "jpeg": "image/jpeg", "jpg": "image/jpeg", "png": "image/png", "js": "text/javascript", "css": "text/css", "json": "text/plain"}; function writenodes(nodes) { fs.writeFile('public/Verbesserungen.txt', nodes, { flag: 'w' }, (err) => { if (err) console.log(err); else { console.log("File written successfully\n"); console.log("The written has the following contents:"); console.log(fs.readFileSync("public/nodes.txt", "utf8")); } })}; // function writeedges(edges) { // // fs.writeFile('public/edges.txt', edges, { flag: 'w' }, (err) => { // if (err) // console.log(err); // else { // console.log("File written successfully\n"); // console.log("The written has the following contents:"); // console.log(fs.readFileSync("public/edges.txt", "utf8")); // } // })}; // the following read funcitons are not asyncronous, that means they will block the process.. // for scalability this has to be changed in future // function readnodes() { // var input = fs.readFileSync('public/nodes.txt', 'utf8') // // console.log('input ooohyeah',input) // // // var danodes = JSON.parse(input); // // // // const lines = input.split(/\r?\n/); // // console.log('line numbaaa 1', lines, lines[1], lines[1].length) // // var string = ''; // // var i; // // // // for (i = 0; i < (lines.length - 2); i++) { // // string += '"data' + i.toString() + '":' + lines[i] + ' ,' ; // // }; // // string += '"data' + lines.length.toString() + '":' + lines[lines.length - 2] ; // // string = '{' + string + '}' ; // // const jsonlines = JSON.parse(string) // // // // // // let sortedlines = []; // // sortedlines = [].slice.call(jsonlines).sort(function(a,b) { // // var x = a.length; // // var y = b.length; // // if (x < y) { // // return -1; // // } // // if (x > y) { // // return 1; // // } // // return 0; // // // // }); // // console.log('daline1 in nodes', sortedlines) // return input // }; // function readedges() { // // var daedges = fs.readFileSync('public/edges.txt', 'utf8'); // // const lines = daedges.split(/\r?\n/); // // // console.log(lines) // // sortedlines = lines.sort(function(a,b) { // // var x = a.length; // // var y = b.length; // // if (x < y) { // // return -1; // // } // // if (x > y) { // // return 1; // // } // // return 0; // // // // }); // // console.log('daline1 in edges', sortedlines[0]) // return daedges // }; // http.createServer((request, response)=>{ var pathname = url.parse(request.url).pathname; var filename; if(pathname === "/"){ filename = "Prototyp.html"; } else{ filename = path.join(process.cwd(), pathname); } try{ fs.accessSync(filename, fs.F_OK); var fileStream = fs.createReadStream(filename); var mimeType = mimeTypes[path.extname(filename).split(".")[1]]; response.writeHead(200, {'Content-Type':mimeType}); fileStream.pipe(response); if (mimeType === "text/plain"){ // Get the payload,if any var decoder = new StringDecoder('utf-8'); var buffer = ''; var theanswer = ''; request.on('data', function(data) { buffer += decoder.write(data); }); var theanswer = ''; console.log('i am at least come til here') request.on('end', function() { buffer += decoder.end(); console.log(buffer); if (buffer[3] === 'i'){ console.log(buffer); } if (buffer[3] === 'f'){ console.log(buffer); theanswer = 'your changes were taken into the\n\nM A T R I X' } console.log(buffer[3]) if (buffer === 'DONE'){ console.log('recieved a DONE') exec("cp /dev/null > public/data.json") } if (buffer.length > 1) { console.log('starting hte python code, argument is ' + buffer) const execpython = new Promise((resolve, reject) => { exec("python prototype_all_chained.py " + buffer + " > public/data.json", (error, stdout, stderr) => { if (error) { console.log(`error: ${error.message}`); reject(error) } else { console.log(`stdout: ${stdout}`); resolve(stdout) } }); }) const checkIfItsDone = () => { execpython .then(ok => { console.log(ok) }) .catch(err => { console.log(err) }) } checkIfItsDone() } // var string = 'oi'; // // var string = execpython('oi'); // // console.log('output of execpython', string); // Promise.resolve(string) // .then(execpython(string)) // .then(s => response.end(s)) // Log the request/response console.log('Payload received: ',buffer); }); } } catch(e) { console.log('File not exists: ' + filename); response.writeHead(404, {'Content-Type': 'text/plain'}); response.write('404 Not Found\n'); response.end(); return; } return; } ).listen(8888);