server.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. var express = require('express');
  2. var bodyParser = require('body-parser');
  3. var slug = require('slug');
  4. var beautify = require("json-beautify");
  5. var _ = require('lodash');
  6. var fs = require('fs');
  7. var app = express();
  8. var examplesJSON = __dirname + '/exemples/liste.json';
  9. var examples = require(examplesJSON);
  10. app.use(express.static(__dirname));
  11. app.use(bodyParser.json());
  12. function addExample(slug, title) {
  13. examples.push({ slug: slug, title: title });
  14. fs.writeFileSync(examplesJSON, beautify(examples, null, 2, 100));
  15. }
  16. app.post('/examples', function(req, res) {
  17. var title = req.body.title;
  18. if(! req.body.title) {
  19. res.status(400).send('Le titre ne peut pas être vide !');
  20. }
  21. var existingTitle = _.find(examples, { title: title });
  22. if(existingTitle) {
  23. res.status(400).send("L'exemple '" + title + "' existe déjà !");
  24. }
  25. var exampleSlug = slug(req.body.title.toLowerCase());
  26. var targetDir = __dirname + '/exemples/' + exampleSlug;
  27. fs.mkdirSync(targetDir);
  28. fs.writeFileSync(targetDir + '/contenu.html', '');
  29. fs.writeFileSync(targetDir + '/script.js', '');
  30. addExample(exampleSlug, title);
  31. res.json({ slug: exampleSlug, title: title });
  32. });
  33. app.put('/examples/:slug', function(req, res) {
  34. var slug = req.params.slug;
  35. var existing = _.find(examples, { slug: slug });
  36. if(! existing) {
  37. res.status(404).send("L'exemple avec l'identifiant '" + slug + "' est introuvable !");
  38. }
  39. var targetDir = __dirname + '/exemples/' + slug;
  40. if(req.body.html) {
  41. fs.writeFileSync(targetDir + '/contenu.html', req.body.html);
  42. }
  43. if(req.body.javascript) {
  44. fs.writeFileSync(targetDir + '/script.js', req.body.javascript);
  45. }
  46. var theDate = new Date();
  47. console.log(theDate.getHours() + ':' + theDate.getMinutes() + " - Sauvegarde de l'exemple '" + existing.title + " effectuée'");
  48. res.json({ success: true });
  49. });
  50. console.log('Le serveur écoute sur le port 3000. Laissez cette console ouverte !')
  51. app.listen(3000);