sandboxApp.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. app.use(bodyParser.urlencoded({ extended: true }));
  13. function addExample(slug, title) {
  14. examples.push({ slug: slug, title: title });
  15. fs.writeFileSync(examplesJSON, beautify(examples, null, 2, 100));
  16. }
  17. app.post('/examples', function(req, res) {
  18. var title = req.body.title;
  19. if(! req.body.title) {
  20. res.status(400).send('Le titre ne peut pas être vide !');
  21. }
  22. var existingTitle = _.find(examples, { title: title });
  23. if(existingTitle) {
  24. res.status(400).send("L'exemple '" + title + "' existe déjà !");
  25. }
  26. var exampleSlug = slug(req.body.title.toLowerCase());
  27. var targetDir = __dirname + '/exemples/' + exampleSlug;
  28. fs.mkdirSync(targetDir);
  29. fs.writeFileSync(targetDir + '/contenu.html', '');
  30. fs.writeFileSync(targetDir + '/script.js', '');
  31. addExample(exampleSlug, title);
  32. res.json({ slug: exampleSlug, title: title });
  33. });
  34. app.put('/examples/:slug', function(req, res) {
  35. var slug = req.params.slug;
  36. var existing = _.find(examples, { slug: slug });
  37. if(! existing) {
  38. res.status(404).send("L'exemple avec l'identifiant '" + slug + "' est introuvable !");
  39. }
  40. var targetDir = __dirname + '/exemples/' + slug;
  41. if(req.body.html) {
  42. fs.writeFileSync(targetDir + '/contenu.html', req.body.html);
  43. }
  44. if(req.body.javascript) {
  45. fs.writeFileSync(targetDir + '/script.js', req.body.javascript);
  46. }
  47. var theDate = new Date();
  48. console.log(theDate.getHours() + ':' + theDate.getMinutes() + " - Sauvegarde de l'exemple '" + existing.title + " effectuée'");
  49. res.json({ success: true });
  50. });
  51. module.exports = app;