FunctionProject/backend/assets/functions/main/convertTemperature.js
2020-03-19 23:21:20 +01:00

52 lines
1.6 KiB
JavaScript

const errorHandling = require('../../utils/errorHandling');
const { requiredFields, generalError } = require('../../config/errors');
/**
* @description Convertis des °C en °F et l'inverse aussi.
* @param {Number} degree - Nombre de degrès
* @param {String} unit - Unité du nombre (°C ou °F)
* @returns {Object} false si arguments non valides et sinon un objet contenant la string et le nombre résultat
* @examples convertTemperature(23, '°C') → { resultNumber: 73.4, resultString: "73.4 °F" }
*/
function convertTemperature(degree, unit) {
let temperatureValue = 0;
let temperatureUnit;
if (unit === "°C") {
temperatureUnit = "°F";
temperatureValue = ((degree * 9/5) + 32);
}
else if (unit === "°F") {
temperatureUnit = "°C";
temperatureValue = (degree - 32) * 5/9;
}
else {
return false;
}
return {
resultNumber: temperatureValue,
resultString: `${temperatureValue} ${temperatureUnit}`
};
}
/* OUTPUTS */
exports.convertTemperatureOutput = ({ res, next }, argsObject) => {
let { degree, unit } = argsObject;
// S'il n'y a pas les champs obligatoire
if (!(degree && unit)) {
return errorHandling(next, requiredFields);
}
// Si ce n'est pas un nombre
degree = parseInt(degree);
if (isNaN(degree)) {
return errorHandling(next, { message: "Veuillez rentré un nombre valide.", statusCode: 400 });
}
const result = convertTemperature(degree, unit);
if (!result) {
return errorHandling(next, generalError);
}
return res.status(200).json(result);
}