backend: Ajout de la fonction weatherRequest + Hotfix: armstrongNumber → NaN

This commit is contained in:
Divlo
2020-03-17 19:37:45 +01:00
parent fd3224ee42
commit 27d6531a98
8 changed files with 61 additions and 3 deletions

View File

@ -1,5 +1,6 @@
const config = {
PORT: process.env.PORT || 8080
PORT: process.env.PORT || 8080,
WEATHER_API_KEY: process.env.OpenWeatherMap_API_KEY
};
module.exports = config;

View File

@ -3,6 +3,7 @@ const { convertArabicToRomanOutput, convertRomanToArabicOutput } = require('./ma
const { convertDistanceOutput } = require('./main/convertDistance');
const { convertTemperatureOutput } = require('./main/convertTemperature');
const { armstrongNumberOutput } = require('./main/armstrongNumber');
const { weatherRequestOutput } = require('./main/weatherRequest');
const functionObject = {
randomNumber : randomNumberOutput,
@ -10,7 +11,8 @@ const functionObject = {
convertRomanToArabic: convertRomanToArabicOutput,
convertDistance : convertDistanceOutput,
convertTemperature : convertTemperatureOutput,
armstrongNumber : armstrongNumberOutput
armstrongNumber : armstrongNumberOutput,
weatherRequest : weatherRequestOutput
};
// Choisi la fonction à exécuter

View File

@ -38,7 +38,7 @@ exports.armstrongNumberOutput = (res, argsObject) => {
// Si ce n'est pas un nombre
number = parseInt(number);
if (isNaN(number) && number >= 0) {
if (isNaN(number) || number <= 0) {
return sendResponse(res, { result: "Veuillez rentré un nombre valide.", httpStatus: 400 });
}

View File

@ -0,0 +1,19 @@
const axios = require('axios');
const sendResponse = require('../../utils/sendResponse');
const { requiredFields } = require('../../config/errors');
const { WEATHER_API_KEY } = require('../../config/config');
/* OUTPUTS */
exports.weatherRequestOutput = async (res, argsObject) => {
let { cityName } = argsObject;
// S'il n'y a pas les champs obligatoire
if (!(cityName)) {
return sendResponse(res, requiredFields);
}
// Récupère les données météo grâce à l'API : openweathermap.org.
axios.get(`https://api.openweathermap.org/data/2.5/weather?q=${cityName}&lang=fr&units=metric&appid=${WEATHER_API_KEY}`)
.then((response) => sendResponse(res, { result: response.data }, true))
.catch(() => sendResponse(res, { result: "La ville n'existe pas (dans l'API de openweathermap.org)." }));
}