Skip to content
Snippets Groups Projects
Commit e3c8c0ec authored by Inès Yeterian's avatar Inès Yeterian
Browse files

trying

parent 6c0795ac
No related branches found
No related tags found
1 merge request!4Url/year/title
......@@ -3,13 +3,27 @@ var fs = require("fs");
var path = require("path");
var { celebrate } = require("celebrate");
var { newToucan, validId, validGet, validTitle } = require("../utils/schema");
var { newToucan, validId, validGet, validTitle, validURL} = require("../utils/schema");
var env = require("../.env");
var isLogged = require("../utils/authentification");
var upload = require("../utils/fileSaver");
var Toucan = require("../models/modelToucan");
var router = express.Router();
let urltoucans = Toucan.aggregate([
{$addFields: {titlelc: {$split: [{$toLower:"$title"}, " "]}}},
{$addFields:{year:{$dateToString: {format: "%Y", date: "$date"}}}},
{$addFields:
{titlelcnospace:
{$reduce:
{input: "$titlelc",initialValue: "",
in: { $concat : ["$$value", "$$this"]}}} }},
{$addFields:
{urlId:
{$concat:["$titlelcnospace","-","$year"]}}},
{$unset:["titlelc","year","titlelcnospace","title","date"]},
]);
router.route("/toucans")
/**
* Une route qui renvoie un json avec tous les toucans, si limit est défini et vaut n, on renvoie les n derniers toucans
......@@ -124,14 +138,15 @@ router.route("/img/:id")
}
});
router.route("/pdf/:title")
.get(celebrate({params: validTitle}), function(req,res) {
Toucan.findOne({title: req.params.title}, (err,data) => {
router.route("/pdf/:url")
.get(celebrate({params: validURL}), function(req,res) {
urltoucans.findOne({urlID: req.params.url}, (err,data) => {
if (err) {
res.end(500);
return;
} else if (!data) {
res.status(404).send("Toucan non trouvée");
}
else if (!data) {
res.status(404).send("Toucan non trouvé");
return;
}
const id = data._id;
......
......@@ -13,11 +13,19 @@ var validTitle = Joi.object({
.regex(/^[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ._\s'-]{1,60}$/) //Autorise la plupart des acents
.required(),
});
var validId = Joi.object({id: Joi.string().hex().length(24).required()});
var validGet = Joi.object({
limit: Joi.number().integer(),
before: Joi.date().timestamp(),
after: Joi.date().timestamp()
});
module.exports = { newToucan, validTitle, validId, validGet };
\ No newline at end of file
var validURL = Joi.object({
title: Joi.string()
.regex(/^[a-z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœ._'-]{1,60}\d{4}$/) //
.required(),
});
module.exports = { newToucan, validTitle, validId, validURL, validGet };
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment