dadou-json-editor
Version:
Angular 8 with Electron (Typescript + SASS + Hot Reload)
161 lines (140 loc) • 5.16 kB
text/typescript
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);
});
}