UNPKG

dadou-json-editor

Version:

Angular 8 with Electron (Typescript + SASS + Hot Reload)

161 lines (140 loc) 5.16 kB
import { Request, Response } from 'express'; import * as express from 'express'; import * as bodyParser from 'body-parser'; import * as fs from 'fs'; import * as os from 'os'; // Creates and configures an ExpressJS web server. class App { // ref to Express instance public express: express.Application; //Run configuration methods on the Express instance. constructor() { this.express = express(); this.middleware(); this.express.route("/travail").get((req: Request, res: Response) => { let fichierDirTravail = `${os.homedir()}/travail.txt`; if (fs.existsSync(fichierDirTravail)) { let s = fs.statSync(fichierDirTravail); if (s.isFile()) { let dirTravail = fs.readFileSync(fichierDirTravail).toString(); if (fs.existsSync(dirTravail)) { s = fs.statSync(dirTravail); if (s.isDirectory()) { res.status(200).send({dir:dirTravail}); return; } } } } res.status(200).send('e:/data'); }); this.express.route("/travail").post((req: Request, res: Response) => { const dirTravail = `${req.body}` let fichierDirTravail = `${os.homedir()}/travail.txt`; if (fs.existsSync(dirTravail)) { let s = fs.statSync(dirTravail); if (s.isDirectory()) { fs.writeFileSync(fichierDirTravail, dirTravail); res.status(200).send({dir: dirTravail}); return; } } res.status(200).send('e:/data'); }); this.express.route("/supprimer").post((req: Request, res: Response) => { const ressource = `${req.body}` const s = fs.statSync(ressource); if (s.isFile()) { console.log(`supprimer file ${ressource} `); fs.unlinkSync(ressource); } if (s.isDirectory) { console.log(`supprimer directory ${ressource} `); fs.rmdirSync(ressource); } }); this.express.route("/type").post((req: Request, res: Response) => { const ressource = `${req.body}` if (fs.existsSync(ressource)) { const s = fs.statSync(ressource); if (s.isFile()) { console.log(`type ${ressource} file`); res.status(200).send({ type: 'file' }); return; } if (s.isDirectory()) { console.log(`type ${ressource} directory`); res.status(200).send({ type: 'directory' }); return; } } console.log(`type ${ressource} non existant`); res.status(200).send({}); }); this.express.route("/lire").post((req: Request, res: Response) => { const ressource = `${req.body}` console.log(`lire ${ressource}`); if (fs.existsSync(ressource)) { const s = fs.statSync(ressource); if (s.isFile()) { res.status(200).send({ type: 'file', data: fs.readFileSync(ressource).toString() }); return; } if (s.isDirectory()) { const ls = fs.readdirSync(ressource); const lsEtType = ls.map((val) => { const enfant = ressource + '/' + val; const se = fs.statSync(enfant); let type = '?'; if (se.isDirectory()) { type = 'directory'; } if (se.isFile()) { type = 'file'; } return { type: type, name: val } }); res.status(200).send({ type: 'directory', data: lsEtType }); return; } } res.status(200).send({}); }); this.express.route("/ecrire").post((req: Request, res: Response) => { let body: string; body = req.body.toString(); const jsonObject = JSON.parse(body); const ressource = `${jsonObject.ressource}`; if (jsonObject.type === 'file') { console.log(`ecrire file ${ressource}\n${jsonObject.contenu}`); fs.writeFileSync(ressource, jsonObject.contenu); } if (jsonObject.type === 'directory') { console.log(`ecrire directory ${ressource}\n`); fs.mkdirSync(ressource); } res.status(200).send({}); }); //this.routes(); } // Configure Express middleware. private middleware(): void { var router = express.Router(); this.express.use(function (req, res, next) { // console.log("requete "); // console.log(req.headers); res.header("Access-Control-Allow-Origin", '*'); // res.header("Access-Control-Allow-Credentials", 'true'); // res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header("Access-Control-Allow-Headers", 'Origin,X-Requested-With,Content-Type,Accept,content-type,application/json,key,user'); next(); }); this.express.use(bodyParser.text()); this.express.use(bodyParser.urlencoded({ extended: false })); } } export function start() { new App().express.listen(8080, () => { console.log('listening on port ' + 8080); }); }