server.js 1.7 KB

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