backend: Hotfix convertRomanToArabic + exports

This commit is contained in:
Divlo 2020-03-24 17:02:30 +01:00
parent 2c61a22787
commit 84712eb251
12 changed files with 69 additions and 54 deletions

View File

@ -1,26 +1,25 @@
const { randomNumberOutput } = require('./main/randomNumber'); const randomNumberOutput = require('./main/randomNumber');
const { convertArabicToRomanOutput, convertRomanToArabicOutput } = require('./main/convertRomanArabicNumbers'); const convertRomanArabicNumbersOutput = require('./main/convertRomanArabicNumbers');
const { convertDistanceOutput } = require('./main/convertDistance'); const convertDistanceOutput = require('./main/convertDistance');
const { convertTemperatureOutput } = require('./main/convertTemperature'); const convertTemperatureOutput = require('./main/convertTemperature');
const { armstrongNumberOutput } = require('./main/armstrongNumber'); const armstrongNumberOutput = require('./main/armstrongNumber');
const { weatherRequestOutput } = require('./main/weatherRequest'); const weatherRequestOutput = require('./main/weatherRequest');
const { convertCurrencyOutput } = require('./main/convertCurrency'); const convertCurrencyOutput = require('./main/convertCurrency');
const { calculateAgeOutput } = require('./main/calculateAge'); const calculateAgeOutput = require('./main/calculateAge');
const { heapAlgorithmOutput } = require('./main/heapAlgorithm'); const heapAlgorithmOutput = require('./main/heapAlgorithm');
const { convertEncodingOutput } = require('./main/convertEncoding'); const convertEncodingOutput = require('./main/convertEncoding');
const functionObject = { const functionObject = {
randomNumber : randomNumberOutput, randomNumber : randomNumberOutput,
convertArabicToRoman: convertArabicToRomanOutput, convertRomanArabicNumbers: convertRomanArabicNumbersOutput,
convertRomanToArabic: convertRomanToArabicOutput, convertDistance : convertDistanceOutput,
convertDistance : convertDistanceOutput, convertTemperature : convertTemperatureOutput,
convertTemperature : convertTemperatureOutput, armstrongNumber : armstrongNumberOutput,
armstrongNumber : armstrongNumberOutput, weatherRequest : weatherRequestOutput,
weatherRequest : weatherRequestOutput, convertCurrency : convertCurrencyOutput,
convertCurrency : convertCurrencyOutput, calculateAge : calculateAgeOutput,
calculateAge : calculateAgeOutput, heapAlgorithm : heapAlgorithmOutput,
heapAlgorithm : heapAlgorithmOutput, convertEncoding : convertEncodingOutput
convertEncoding : convertEncodingOutput
}; };
// Choisi la fonction à exécuter // Choisi la fonction à exécuter

View File

@ -28,7 +28,7 @@ function armstrongNumber(number) {
} }
/* OUTPUTS */ /* OUTPUTS */
exports.armstrongNumberOutput = ({ res, next }, argsObject) => { module.exports = armstrongNumberOutput = ({ res, next }, argsObject) => {
let { number } = argsObject; let { number } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire

View File

@ -20,7 +20,7 @@ function calculateAge(currentDate, { birthDateDay, birthDateMonth, birthDateYear
} }
/* OUTPUTS */ /* OUTPUTS */
exports.calculateAgeOutput = ({ res, next }, argsObject) => { module.exports = calculateAgeOutput = ({ res, next }, argsObject) => {
let { birthDate } = argsObject; let { birthDate } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire

View File

@ -4,7 +4,7 @@ const { requiredFields } = require('../../config/errors');
const formatNumberResult = require('../secondary/formatNumberResult'); const formatNumberResult = require('../secondary/formatNumberResult');
/* OUTPUTS */ /* OUTPUTS */
exports.convertCurrencyOutput = ({ res, next }, argsObject) => { module.exports = convertCurrencyOutput = ({ res, next }, argsObject) => {
let { number, baseCurrency, finalCurrency } = argsObject; let { number, baseCurrency, finalCurrency } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire

View File

@ -28,7 +28,7 @@ function convertDistance(firstValue, unitFirstValue, unitFinalValue) {
} }
/* OUTPUTS */ /* OUTPUTS */
exports.convertDistanceOutput = ({ res, next }, argsObject) => { module.exports = convertDistanceOutput = ({ res, next }, argsObject) => {
let { number, numberUnit, finalUnit } = argsObject; let { number, numberUnit, finalUnit } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire

View File

@ -214,12 +214,11 @@ function hexadecimalToText (s) {
/* OUTPUTS */ /* OUTPUTS */
const convertEncoding = { decimalToBinary, binaryToDecimal, decimalToHexadecimal, hexadecimalToDecimal, binaryToHexadecimal, hexadecimalToBinary, textToNumberUnicode, numberUnicodeToText, textToBinary, binaryToText, textToHexadecimal, hexadecimalToText }; const convertEncoding = { decimalToBinary, binaryToDecimal, decimalToHexadecimal, hexadecimalToDecimal, binaryToHexadecimal, hexadecimalToBinary, textToNumberUnicode, numberUnicodeToText, textToBinary, binaryToText, textToHexadecimal, hexadecimalToText };
function executeFunction(option, value) { function executeFunction(option, value) {
return convertEncoding[option](value); return convertEncoding[option](value);
} }
exports.convertEncodingOutput = ({ res, next }, argsObject) => { module.exports = convertEncodingOutput = ({ res, next }, argsObject) => {
let { value, functionName } = argsObject; let { value, functionName } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire
@ -227,9 +226,9 @@ exports.convertEncodingOutput = ({ res, next }, argsObject) => {
return errorHandling(next, requiredFields); return errorHandling(next, requiredFields);
} }
// Si la fonction de convertEncoding n'existe pas // Si la fonction n'existe pas
if (!convertEncoding.hasOwnProperty(functionName)) { if (!convertEncoding.hasOwnProperty(functionName)) {
return errorHandling(next, { message: "Cette conversion de convertEncoding n'existe pas." }); return errorHandling(next, { message: "Cette conversion n'existe pas.", statusCode: 400 });
} }
const result = executeFunction(functionName, value); const result = executeFunction(functionName, value);

View File

@ -1,5 +1,6 @@
const errorHandling = require('../../utils/errorHandling'); const errorHandling = require('../../utils/errorHandling');
const { requiredFields, generalError } = require('../../config/errors'); const { requiredFields, generalError } = require('../../config/errors');
const formatNumberResult = require('../secondary/formatNumberResult');
/* Variable pour convertRomanArabicNumbers */ /* Variable pour convertRomanArabicNumbers */
const correspondancesRomainArabe = [ const correspondancesRomainArabe = [
@ -20,7 +21,6 @@ const correspondancesRomainArabe = [
/** /**
* @description Convertis un nombre arabe en nombre romain. * @description Convertis un nombre arabe en nombre romain.
* @requires {@link correspondancesRomainArabe}
* @param {Number} nombre - Le nombre arabe à convertir * @param {Number} nombre - Le nombre arabe à convertir
* @returns {String} * @returns {String}
* @examples convertArabicToRoman(24) 'XXIV' * @examples convertArabicToRoman(24) 'XXIV'
@ -45,14 +45,13 @@ function convertArabicToRoman(nombre) {
/** /**
* @description Convertis un nombre romain en nombre arabe. * @description Convertis un nombre romain en nombre arabe.
* @requires {@link correspondancesRomainArabe}
* @param {String} str - Le nombre romain à convertir * @param {String} str - Le nombre romain à convertir
* @returns {Number} * @returns {Number}
* @examples convertRomanToArabic('XXIV') 24 * @examples convertRomanToArabic('XXIV') 24
*/ */
function convertRomanToArabic(str) { function convertRomanToArabic(str) {
let result = 0; let result = 0;
for (let i = 0;i < correspondancesRomainArabe.length; i++) { for (let i = 0; i < correspondancesRomainArabe.length; i++) {
while (str.indexOf(correspondancesRomainArabe[i][1]) === 0) { while (str.indexOf(correspondancesRomainArabe[i][1]) === 0) {
// Ajout de la valeur décimale au résultat // Ajout de la valeur décimale au résultat
result += correspondancesRomainArabe[i][0]; result += correspondancesRomainArabe[i][0];
@ -67,27 +66,25 @@ function convertRomanToArabic(str) {
} }
/* OUTPUTS */ /* OUTPUTS */
exports.convertRomanToArabicOutput = ({ res, next }, argsObject) => { const convertRomanToArabicOutput = ({ res, next }, number) => {
let { romanNumber } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire
if (!(romanNumber)) { if (!(number)) {
return errorHandling(next, requiredFields); return errorHandling(next, requiredFields);
} }
// Formate le paramètre // Formate le paramètre
romanNumber = romanNumber.toUpperCase(); number = number.toUpperCase();
const result = convertRomanToArabic(romanNumber); const result = convertRomanToArabic(number);
if (result === 0) { if (result === 0) {
return errorHandling(next, generalError); return errorHandling(next, generalError);
} }
return res.status(200).json({ result }); return res.status(200).json({ result, resultHTML: `<p><span class="important">${number}</span> s'écrit <span class="important">${result}</span> en chiffres arabes.</p>` });
} }
exports.convertArabicToRomanOutput = ({ res, next }, argsObject) => { const convertArabicToRomanOutput = ({ res, next }, number) => {
let { number } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire
if (!(number)) { if (!(number)) {
@ -100,5 +97,27 @@ exports.convertArabicToRomanOutput = ({ res, next }, argsObject) => {
return errorHandling(next, { message: "Veuillez rentré un nombre valide.", statusCode: 400 }); return errorHandling(next, { message: "Veuillez rentré un nombre valide.", statusCode: 400 });
} }
return res.status(200).json({ result: convertArabicToRoman(number) }); const result = convertArabicToRoman(number);
return res.status(200).json({ result, resultHTML: `<p><span class="important">${formatNumberResult(number)}</span> s'écrit <span class="important">${result}</span> en chiffres romains.</p>` });
}
const convertRomanArabicObject = { convertRomanToArabicOutput, convertArabicToRomanOutput };
function executeFunction(option, value, { res, next }) {
return convertRomanArabicObject[option]({ res, next}, value);
}
module.exports = convertRomanArabicNumbersOutput = ({ res, next }, argsObject) => {
let { value, functionName } = argsObject;
// S'il n'y a pas les champs obligatoire
if (!(value && functionName)) {
return errorHandling(next, requiredFields);
}
// Si la fonction n'existe pas
if (!convertRomanArabicObject.hasOwnProperty(functionName)) {
return errorHandling(next, { message: "Cette conversion n'existe pas.", statusCode: 400 });
}
executeFunction(functionName, value, { res, next });
} }

View File

@ -27,7 +27,7 @@ function convertTemperature(degree, unit) {
} }
/* OUTPUTS */ /* OUTPUTS */
exports.convertTemperatureOutput = ({ res, next }, argsObject) => { module.exports = convertTemperatureOutput = ({ res, next }, argsObject) => {
let { degree, unitToConvert } = argsObject; let { degree, unitToConvert } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire

View File

@ -28,7 +28,7 @@ function heapAlgorithm(string) {
} }
/* OUTPUTS */ /* OUTPUTS */
exports.heapAlgorithmOutput = ({ res, next }, argsObject) => { module.exports = heapAlgorithmOutput = ({ res, next }, argsObject) => {
let { string } = argsObject; let { string } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire

View File

@ -14,7 +14,7 @@ function randomNumber(min, max) {
} }
/* OUTPUTS */ /* OUTPUTS */
exports.randomNumberOutput = ({ res, next }, argsObject) => { module.exports = randomNumberOutput = ({ res, next }, argsObject) => {
let { min, max } = argsObject; let { min, max } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire

View File

@ -3,7 +3,7 @@ const Queue = require('smart-request-balancer');
const errorHandling = require('../../utils/errorHandling'); const errorHandling = require('../../utils/errorHandling');
const { requiredFields } = require('../../config/errors'); const { requiredFields } = require('../../config/errors');
const { WEATHER_API_KEY } = require('../../config/config'); const { WEATHER_API_KEY } = require('../../config/config');
const { dateTimeUTC } = require('../secondary/dateTimeManagement'); const dateTimeUTC = require('../secondary/dateTimeManagement');
const capitalize = require('../secondary/capitalize'); const capitalize = require('../secondary/capitalize');
const queue = new Queue({ const queue = new Queue({
@ -22,7 +22,7 @@ const queue = new Queue({
}); });
/* OUTPUTS */ /* OUTPUTS */
exports.weatherRequestOutput = ({ res, next }, argsObject) => { module.exports = weatherRequestOutput = ({ res, next }, argsObject) => {
let { cityName } = argsObject; let { cityName } = argsObject;
// S'il n'y a pas les champs obligatoire // S'il n'y a pas les champs obligatoire

View File

@ -1,7 +1,3 @@
const timeNow = new Date();
const utcOffset = timeNow.getTimezoneOffset();
timeNow.setMinutes(timeNow.getMinutes() + utcOffset);
/** /**
* @description Donne la date et l'heure selon l'UTC (Universal Time Coordinated). * @description Donne la date et l'heure selon l'UTC (Universal Time Coordinated).
* @param {String} utc Heure de décalage par rapport à l'UTC * @param {String} utc Heure de décalage par rapport à l'UTC
@ -9,9 +5,12 @@ timeNow.setMinutes(timeNow.getMinutes() + utcOffset);
* @examples dateTimeUTC('0') * @examples dateTimeUTC('0')
*/ */
function dateTimeUTC(utc) { function dateTimeUTC(utc) {
const timeNow = new Date();
const utcOffset = timeNow.getTimezoneOffset();
timeNow.setMinutes(timeNow.getMinutes() + utcOffset);
const enteredOffset = parseFloat(utc)*60; const enteredOffset = parseFloat(utc)*60;
timeNow.setMinutes(timeNow.getMinutes() + enteredOffset); timeNow.setMinutes(timeNow.getMinutes() + enteredOffset);
return showDateTime(enteredOffset); return showDateTime(timeNow);
} }
/** /**
@ -21,7 +20,7 @@ function dateTimeUTC(utc) {
* @returns {Object} Retourne un objet contenant l'année, le mois, le jour, l'heure, les minutes, les secondes et la date formaté * @returns {Object} Retourne un objet contenant l'année, le mois, le jour, l'heure, les minutes, les secondes et la date formaté
* @examples dateTimeUTC('0') dateTimeUTC vous renvoie l'exécution de showDateTime * @examples dateTimeUTC('0') dateTimeUTC vous renvoie l'exécution de showDateTime
*/ */
function showDateTime(enteredOffset) { function showDateTime(timeNow) {
const year = timeNow.getFullYear(); const year = timeNow.getFullYear();
const month = ('0'+(timeNow.getMonth()+1)).slice(-2); const month = ('0'+(timeNow.getMonth()+1)).slice(-2);
const day = ('0'+timeNow.getDate()).slice(-2); const day = ('0'+timeNow.getDate()).slice(-2);
@ -38,8 +37,7 @@ function showDateTime(enteredOffset) {
second: second, second: second,
showDateTimeValue: showDateTimeValue showDateTimeValue: showDateTimeValue
}; };
timeNow.setMinutes(timeNow.getMinutes() - enteredOffset);
return objectDateTime; return objectDateTime;
} }
module.exports = { showDateTime, dateTimeUTC }; module.exports = dateTimeUTC;