|
|
@@ -4,7 +4,7 @@
|
|
|
var express = require('express');
|
|
|
var bodyParser = require('body-parser');
|
|
|
var slug = require('slug');
|
|
|
-var beautify = require("json-beautify");
|
|
|
+var beautify = require('json-beautify');
|
|
|
var _ = require('lodash');
|
|
|
var path = require('path');
|
|
|
var Mustache = require('mustache');
|
|
|
@@ -13,6 +13,7 @@ var fs = require('fs');
|
|
|
var Promise = require('bluebird'); Promise.promisifyAll(fs);
|
|
|
var sandboxTpml = fs.readFileSync(__dirname + '/html/template.mustache.html').toString();
|
|
|
var exampleTmpl = require('./lib/exampleTmpl.json');
|
|
|
+var repoTmpl = require('./lib/repoTmpl.json');
|
|
|
var ExampleStore = require('./lib/ExampleStore');
|
|
|
var isTesting = process.env.NODE_ENV === 'testing';
|
|
|
var examplesDir = ! isTesting ? __dirname + '/exemples' :
|
|
|
@@ -121,6 +122,35 @@ console.log('### checkRepoExists', repoSlug);
|
|
|
next();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/**
|
|
|
+ * Create a new repo
|
|
|
+ */
|
|
|
+app.post('/repos', function(req, res) {
|
|
|
+
|
|
|
+ // Check for title and extract params
|
|
|
+ if(! req.body || ! req.body.title) {
|
|
|
+ res.status(400).send('Le titre ne peut pas être vide !');
|
|
|
+ }
|
|
|
+ const { title } = req.body;
|
|
|
+ const repoSlug = slug(title.toLowerCase());
|
|
|
+ const existingRepo = exStore.getRepo(repoSlug);
|
|
|
+
|
|
|
+ // Prevent duplicate title
|
|
|
+ if(existingRepo) {
|
|
|
+ return res.status(409).send("La collection '" + title + "' existe déjà !");
|
|
|
+ }
|
|
|
+
|
|
|
+ // Prepare config
|
|
|
+ var config = Object.assign({
|
|
|
+ title
|
|
|
+ }, repoTmpl);
|
|
|
+
|
|
|
+ exStore.addRepository(repoSlug, config)
|
|
|
+ .then(repo => res.json(repo));
|
|
|
+
|
|
|
+});
|
|
|
+
|
|
|
/**
|
|
|
* Create a new example for specified repo
|
|
|
*/
|
|
|
@@ -138,7 +168,7 @@ app.post('/:repoSlug/examples',
|
|
|
// Prevent duplicate title
|
|
|
var existingTitle = _.find(req.repo.examples, { title: title });
|
|
|
if(existingTitle) {
|
|
|
- res.status(400).send("L'exemple '" + title + "' existe déjà !");
|
|
|
+ return res.status(409).send("L'exemple '" + title + "' existe déjà !");
|
|
|
}
|
|
|
var exampleSlug = slug(req.body.title.toLowerCase());
|
|
|
|