This repository has been archived on 2021-02-16. You can view files and clone it, but cannot push or open issues or pull requests.
Nodezzarella/app.js
2017-07-03 00:18:07 +02:00

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);