soundbirder/controllers/api.js

76 lines
1.9 KiB
JavaScript
Executable File

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;
function getHome(req, res) {
res.render('api', {
title: "SoundBirder api",
version: 0
});
}
function quizz(req, res) {
debug('Generating quizz');
const { lat, lng } = req.query;
debug(`Coordinates: ${lat}, ${lng}`);
const locale = req.i18n.locale;
debugLocale("Locale:", locale);
quizzController.generateQuizz({ lat, lng }, locale, QUIZZ_SIZE)
.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;
});
}
function check(req, res) {
let answer, correct;
try {
answer = req.query.species;
correct = req.session.answer;
} catch (error) {
console.error(error);
}
let result = {};
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);
}
res.json(result);
}
const game = {
check,
quizz
}
module.exports = {
getHome,
game
}