soundbirder/controllers/api.js

76 lines
1.9 KiB
JavaScript
Raw Normal View History

require('dotenv').config();
const debug = require('debug')('soundbirder:api');
const debugLocale = require('debug')('soundbirder:locale');
const debugResponses = require('debug')('soundbirder:api:responses');
const quizzController = require('./quizz');
const QUIZZ_SIZE = process.env.QUIZZ_SIZE ? process.env.QUIZZ_SIZE : 5;
2022-08-29 10:38:42 +02:00
function getHome(req, res) {
res.render('api', {
title: "SoundBirder api",
version: 0
});
}
function quizz(req, res) {
debug('Generating quizz');
2022-09-03 21:52:02 +02:00
const { lat, lng } = req.query;
debug(`Coordinates: ${lat}, ${lng}`);
const locale = req.i18n.locale;
debugLocale("Locale:", locale);
quizzController.generateQuizz({ lat, lng }, locale, QUIZZ_SIZE)
2022-08-29 10:38:42 +02:00
.then(({ species, answer, audio }) => {
req.session.answer = answer;
res.json({ species, audio });
debug("Quizz sent");
})
.catch(error => {
debug("Faced error while generating quizz");
res.json({ error });
throw error;
});
}
2022-08-29 10:38:42 +02:00
function check(req, res) {
2022-08-29 14:05:34 +02:00
let answer, correct;
try {
answer = req.query.species;
correct = req.session.answer;
} catch (error) {
console.error(error);
}
2022-08-29 10:38:42 +02:00
let result = {};
2022-08-29 14:05:34 +02:00
try {
if (correct === undefined) {
console.error("No answer found in session");
} else if (answer === correct.speciesCode) {
debug("Correct answer");
result = {
correct: true,
message: req.i18n.__('Correct!'),
answer: correct
};
} else {
debug("Wrong answer");
result = {
correct: false,
message: req.i18n.__('Wrong!'),
answer: correct
};
}
} catch (error) {
console.error(error);
2022-08-29 10:38:42 +02:00
}
res.json(result);
}
const game = {
check,
quizz
}
module.exports = {
getHome,
game
}