115 lines
3.8 KiB
JavaScript
115 lines
3.8 KiB
JavaScript
const express = require('express'),
|
|
cors = require("cors"),
|
|
app = express(),
|
|
log = require("color-logs")(true, true, "Dryusdan.fr"),
|
|
fs = require("fs"),
|
|
path = require('path'),
|
|
promise = require('promise'),
|
|
hbs = require('hbs');
|
|
|
|
log.info("Application started and now preparing");
|
|
|
|
var corsOptions = {
|
|
"origin": "*",
|
|
"Access-Control-Allow-Origin": "*",
|
|
"methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
|
|
"preflightContinue": false
|
|
};
|
|
/**
|
|
* Create menu html
|
|
*/
|
|
const config = require("./config.json");
|
|
var Template = require("./classes/Template.class");
|
|
var Categories = require("./classes/Categories.class");
|
|
var Articles = require("./classes/Articles.class");
|
|
|
|
class App {
|
|
constructor(rootPath, port){
|
|
|
|
/**
|
|
* Listen to http://0.0.0.0:port
|
|
*/
|
|
app.listen(port);
|
|
log.info("HTTP server listening on port", port);
|
|
log.info("Application ready");
|
|
var template = new Template();
|
|
|
|
app.get("/", function(req, res){
|
|
var categories = new Categories();
|
|
Promise.all([
|
|
template.getNav(),
|
|
categories.getHome()
|
|
]).then(data => {
|
|
var nav = data[0];
|
|
var content = data[1];
|
|
res.setHeader("Content-type", "text/html");
|
|
var tplData = {
|
|
"blogName": config.blogName,
|
|
"title": 'Accueil',
|
|
"nav": nav,
|
|
"content": content
|
|
};
|
|
res.render('template.hbs', tplData);
|
|
}).catch(err => {
|
|
res.setHeader("Content-type", "text/plain");
|
|
|
|
res.end("erreur");
|
|
});
|
|
|
|
|
|
});
|
|
app.get("/:slug", function(req, res){
|
|
var categories = new Categories();
|
|
Promise.all([
|
|
template.getNav(),
|
|
categories.getListArticles(req.params.slug),
|
|
categories.getCategorie(req.params.slug)
|
|
]).then(data => {
|
|
var nav = data[0];
|
|
var content = data[1];
|
|
var dataCategories = data[2];
|
|
res.setHeader("Content-type", "text/html");
|
|
var tplData = {
|
|
"blogName": config.blogName,
|
|
"title": dataCategories.title,
|
|
"nav": nav,
|
|
"content": content
|
|
};
|
|
res.render('template.hbs', tplData);
|
|
}).catch(err => {
|
|
res.setHeader("Content-type", "text/plain");
|
|
|
|
res.end("erreur");
|
|
});
|
|
});
|
|
app.get("/:categories/:slug", function(req, res){
|
|
var categories = new Categories();
|
|
var articles = new Articles();
|
|
Promise.all([
|
|
template.getNav(),
|
|
categories.getCategorie(req.params.categories),
|
|
articles.getArticle(req.params.categories, req.params.slug)
|
|
]).then(data => {
|
|
var nav = data[0];
|
|
var dataCategories = data[1];
|
|
var dataCategories = data[2];
|
|
res.setHeader("Content-type", "text/html");
|
|
var tplData = {
|
|
"blogName": config.blogName,
|
|
"title": dataCategories.title,
|
|
"nav": nav,
|
|
"content": content
|
|
};
|
|
res.render('template.hbs', tplData);
|
|
}).catch(err => {
|
|
res.setHeader("Content-type", "text/plain");
|
|
|
|
res.end("erreur");
|
|
});
|
|
});
|
|
app.use(express.static("./public"));
|
|
}
|
|
|
|
}
|
|
|
|
new App("/", config.appPort); |