From ebea6bc995b0425599991633500909a0edeacdfc Mon Sep 17 00:00:00 2001 From: carlos Date: Sat, 4 Jun 2022 14:35:49 -0400 Subject: [PATCH] feat: adding converter --- index.js | 7 +++++++ utils/MOCK_DATA.csv | 11 +++++++++++ utils/converter.js | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 index.js create mode 100644 utils/MOCK_DATA.csv create mode 100644 utils/converter.js diff --git a/index.js b/index.js new file mode 100644 index 0000000..1344f31 --- /dev/null +++ b/index.js @@ -0,0 +1,7 @@ +const { readFile } = require('./utils/converter') + +const add = async (path) => { + return await readFile(`${path}`) +} + +module.exports = add diff --git a/utils/MOCK_DATA.csv b/utils/MOCK_DATA.csv new file mode 100644 index 0000000..e89b9f6 --- /dev/null +++ b/utils/MOCK_DATA.csv @@ -0,0 +1,11 @@ +id,first_name,last_name,email,gender,ip_address +1,Rowney,Vanlint,rvanlint0@archive.org,Male,166.243.73.22 +2,Granny,Zecchetti,gzecchetti1@toplist.cz,Bigender,76.2.20.212 +3,Elena,Quilkin,equilkin2@artisteer.com,Female,206.153.61.10 +4,Rob,Kilkenny,rkilkenny3@spiegel.de,Genderqueer,56.156.35.222 +5,Alayne,Sleit,asleit4@si.edu,Female,105.12.142.0 +6,Arleta,Radsdale,aradsdale5@psu.edu,Female,20.128.1.2 +7,Maximilian,Oswick,moswick6@hc360.com,Male,241.240.199.79 +8,Gil,Chinnick,gchinnick7@slashdot.org,Male,2.145.45.118 +9,Galen,Goulter,ggoulter8@sakura.ne.jp,Male,37.93.133.252 +10,Samara,Benka,sbenka9@nydailynews.com,Female,225.2.115.39 diff --git a/utils/converter.js b/utils/converter.js new file mode 100644 index 0000000..e903e57 --- /dev/null +++ b/utils/converter.js @@ -0,0 +1,33 @@ +const fs = require('fs') + +const csvToJson = (csv) => { + const lines = csv.split('\n') + const result = []; + const headers = lines[0].split(','); + const contents = lines.slice(1, lines.length - 1) + const obj = {}; + for (const content of contents) { + const currentline = content.split(','); + for (let j = 0; j < headers.length; j++) { + obj[headers[j]] = currentline[j]; + } + result.push(obj); + } + return JSON.parse(JSON.stringify(result)); //JSON +} + +exports.readFile = async (pathFile) => { + const result = new Promise((resolve, reject) => { + fs.readFile(`${pathFile}`, 'utf8', (err, data) => { + if (err) { + reject(err); + return; + } + const result = csvToJson(data) + resolve(result) + }); + }) + + return result +} +