From 222eb4f0a32aff6b6b69d0f163dbd30a57464faa Mon Sep 17 00:00:00 2001
From: Renzo Beux <renzobeux@gmail.com>
Date: Wed, 8 Sep 2021 14:30:29 -0300
Subject: [PATCH] fix: SonarQube fixes and implementation of constants

---
 package-lock.json            |   5 +++
 package.json                 |   1 +
 src/Config/Constants.ts      |   6 ++++
 src/Services/SheetService.ts |  57 +++++++----------------------------
 src/Services/test.xlsx       | Bin 19530 -> 20421 bytes
 src/index.ts                 |   3 +-
 6 files changed, 25 insertions(+), 47 deletions(-)
 create mode 100644 src/Config/Constants.ts

diff --git a/package-lock.json b/package-lock.json
index c007368..a871c7f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3805,6 +3805,11 @@
       "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
       "dev": true
     },
+    "helmet": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz",
+      "integrity": "sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg=="
+    },
     "hosted-git-info": {
       "version": "2.8.9",
       "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
diff --git a/package.json b/package.json
index 12c97c5..bd0ac15 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
     "dotenv": "^10.0.0",
     "express": "^4.17.1",
     "gulp-eslint": "^6.0.0",
+    "helmet": "^4.6.0",
     "openapi-types": "^9.3.0",
     "swagger-jsdoc": "^6.1.0",
     "swagger-ui-express": "^4.1.6",
diff --git a/src/Config/Constants.ts b/src/Config/Constants.ts
new file mode 100644
index 0000000..6f2b975
--- /dev/null
+++ b/src/Config/Constants.ts
@@ -0,0 +1,6 @@
+export const SheetNames = {
+  HOMBRES: 'Hombres',
+  MUJERES: 'Mujeres',
+  HOMBRES_MENORES: 'Hombres<1',
+  MUJERES_MENORES: 'Mujeres<1',
+};
diff --git a/src/Services/SheetService.ts b/src/Services/SheetService.ts
index 79f94f5..947b1b0 100644
--- a/src/Services/SheetService.ts
+++ b/src/Services/SheetService.ts
@@ -1,4 +1,5 @@
 import * as XLSX from 'xlsx';
+import { SheetNames } from '../Config/Constants';
 import {
   SheetParserResponse, Menores, Mayores, MenoresSheet, MayoresSheet,
 } from '../Models/SheetParserResponse';
@@ -19,7 +20,7 @@ import {
 //   return work;
 // };
 
-const parseMen = (worksheet: XLSX.WorkSheet): Mayores[] => {
+const parseAdults = (worksheet: XLSX.WorkSheet): Mayores[] => {
   const res: Mayores[] = [];
   const ref = worksheet['!ref'];
   if (ref === undefined) throw new Error('An error ocurred');
@@ -42,43 +43,7 @@ const parseMen = (worksheet: XLSX.WorkSheet): Mayores[] => {
   return res;
 };
 
-const parseWomen = (worksheet: XLSX.WorkSheet): Mayores[] => {
-  const res: Mayores[] = [];
-  const ref = worksheet['!ref'];
-  if (ref === undefined) throw new Error('An error ocurred');
-  const range = XLSX.utils.decode_range(ref);
-  range.s.c = 0;
-  range.e.c = 2;
-  const newRange = XLSX.utils.encode_range(range);
-
-  const aux = XLSX.utils.sheet_to_json(worksheet, { range: newRange }) as unknown as MayoresSheet[];
-  aux.forEach((element: MayoresSheet) => {
-    res.push(
-      {
-        edad: element['Edad (años)'],
-        peso: element['Peso (Kg)'],
-        talla: element['Talla (cm)'],
-      },
-    );
-  });
-  return res;
-};
-
-const parseMenLessThanAYear = (worksheet: XLSX.WorkSheet): Menores[] => {
-  const res: Menores[] = [];
-  const aux = XLSX.utils.sheet_to_json(worksheet) as unknown as MenoresSheet[];
-  aux.forEach((element: MenoresSheet) => {
-    res.push(
-      {
-        edad: element['Edad (meses)'],
-        peso: element['Peso (Kg)'],
-      },
-    );
-  });
-  return res;
-};
-
-const parseWomenLessThanAYear = (worksheet: XLSX.WorkSheet): Menores[] => {
+const parseBabies = (worksheet: XLSX.WorkSheet): Menores[] => {
   const res: Menores[] = [];
   const aux = XLSX.utils.sheet_to_json(worksheet) as unknown as MenoresSheet[];
   aux.forEach((element: MenoresSheet) => {
@@ -110,17 +75,17 @@ const parseSheetService = (data: Buffer): SheetParserResponse => {
   sheetNames.forEach((name) => {
     const worksheet: XLSX.WorkSheet = workbook.Sheets[name];
     switch (name) {
-      case 'Hombres<1':
-        hombresMenores = parseMenLessThanAYear(worksheet);
+      case SheetNames.HOMBRES_MENORES:
+        hombresMenores = parseBabies(worksheet);
         break;
-      case 'Hombres':
-        hombres = parseMen(worksheet);
+      case SheetNames.HOMBRES:
+        hombres = parseAdults(worksheet);
         break;
-      case 'Mujeres<1':
-        mujeresMenores = parseWomenLessThanAYear(worksheet);
+      case SheetNames.MUJERES_MENORES:
+        mujeresMenores = parseBabies(worksheet);
         break;
-      case 'Mujeres':
-        mujeres = parseWomen(worksheet);
+      case SheetNames.MUJERES:
+        mujeres = parseAdults(worksheet);
         break;
 
       default:
diff --git a/src/Services/test.xlsx b/src/Services/test.xlsx
index 9fef8e5821051fe4270710bcec7daf0e25d1894a..3edb2bfeb00af26dd42279a2a4ebbdd2beb50724 100644
GIT binary patch
delta 6286
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

delta 5510
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

diff --git a/src/index.ts b/src/index.ts
index 9fdd678..52cbdc3 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -4,11 +4,12 @@ import 'dotenv/config';
 import cors from 'cors';
 import swaggerJsDoc, { Options } from 'swagger-jsdoc';
 import swaggerUi from 'swagger-ui-express';
+import helmet from 'helmet';
 import Routes from './routes';
 
 const app: Application = express();
 const PORT = process.env.PORT || 8000;
-
+app.use(helmet.hidePoweredBy());
 // swagger init
 const swaggerOptions: Options = {
   swaggerDefinition: {
-- 
GitLab