diff --git a/.gitignore b/.gitignore index b512c09..ee2350d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules \ No newline at end of file +node_modules +*.http diff --git a/controller/bancosController.js b/controller/bancosController.js index 238025e..e2bc069 100644 --- a/controller/bancosController.js +++ b/controller/bancosController.js @@ -1,4 +1,4 @@ -const dolarSi = require('../helpers/dolarSi') +const dolarSi = require('../services/dolarSiService') function getDateTime() { var now = new Date(); @@ -18,25 +18,191 @@ function getDateTime() { return dateTime; } -/** - * @description Obtener las cotizaciones del BBVA - * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta - */ -async function getDolarBBVA(req, res){ - try { - const data = await dolarSi.getInfoDolar() - const valores = { - fecha : getDateTime(), - compra : parseFloat(data.cotiza.Capital_Federal.casa336.compra._text.replace(',','.')).toFixed(2), - venta : parseFloat(data.cotiza.Capital_Federal.casa336.venta._text.replace(',','.')).toFixed(2) - } - res.send(valores) - } catch(e) { - res.sendStatus(500) - console.log(e) +class bancosController { + constructor(dolarSiService){ + this.dolarSiService = dolarSiService } + + + /** + * @description Obtener las cotizaciones del Banco BBVA + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarBBVA = async(req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Capital_Federal.casa336.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Capital_Federal.casa336.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } + + + /** + * @description Obtener las cotizaciones del Banco Piano + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarPiano = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : data.cotiza.Capital_Federal.casa37.compra._text.replace(',','.'), + venta : parseFloat(data.cotiza.Capital_Federal.casa37.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } + + + /** + * @description Obtener las cotizaciones del Banco Hipotecario + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarHipotecario = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Capital_Federal.casa217.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Capital_Federal.casa217.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } + + + /** + * @description Obtener las cotizaciones del Banco Galicia + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarGalicia = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Capital_Federal.casa342.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Capital_Federal.casa342.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } + + + /** + * @description Obtener las cotizaciones del Banco Santander + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarSantander = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Capital_Federal.casa401.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Capital_Federal.casa401.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } + + + /** + * @description Obtener las cotizaciones del Banco Ciudad de Buenos Aires + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarCiudad = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Capital_Federal.casa402.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Capital_Federal.casa402.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } + + + /** + * @description Obtener las cotizaciones del Banco Supervielle + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarSupervielle = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Capital_Federal.casa403.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Capital_Federal.casa403.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } + + + /** + * @description Obtener las cotizaciones del Banco Patagoina + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarPatagonia = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Capital_Federal.casa404.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Capital_Federal.casa404.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } + + + /** + * @description Obtener las cotizaciones del Banco Comafi + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarComafi = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Capital_Federal.casa405.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Capital_Federal.casa405.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } + } -module.exports = { - getDolarBBVA -} \ No newline at end of file +module.exports = bancosController \ No newline at end of file diff --git a/controller/dolarController.js b/controller/dolarController.js index 2d65656..2971acf 100644 --- a/controller/dolarController.js +++ b/controller/dolarController.js @@ -1,5 +1,3 @@ -const dolarSi = require('../helpers/dolarSi') - function getDateTime() { var now = new Date(); var year = now.getFullYear(); @@ -18,114 +16,112 @@ function getDateTime() { return dateTime; } +class dolarController{ + constructor(dolarSiService){ + this.dolarSiService = dolarSiService + } -/** - * @description Obtener el valor del dolar oficial - * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta - */ -async function getDolarOficial(req, res){ - try { - const data = await dolarSi.getInfoDolar() - const valores = { - fecha : getDateTime(), - compra : parseFloat(data.cotiza.Dolar.casa344.compra._text.replace(',','.')).toFixed(2), - venta : parseFloat(data.cotiza.Dolar.casa344.venta._text.replace(',','.')).toFixed(2) + /** + * @description Obtener el valor del dolar oficial + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarOficial = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Dolar.casa344.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Dolar.casa344.venta._text.replace(',','.')).toFixed(2) + } + res.send(valores) + } catch(e) { + console.log(e) + res.sendStatus(500) } - res.send(valores) - } catch(e) { - console.log(e) - res.sendStatus(500) } -} -/** - * @description Obtener el valor del dolar blue - * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta - */ -async function getDolarBlue(req, res){ - try { - const data = await dolarSi.getInfoDolar() - const valores = { - fecha : getDateTime(), - compra : parseFloat(data.cotiza.Dolar.casa380.compra._text.replace(',','.')).toFixed(2), - venta : parseFloat(data.cotiza.Dolar.casa380.venta._text.replace(',','.')).toFixed(2) + /** + * @description Obtener el valor del dolar blue + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarBlue = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.Dolar.casa380.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.Dolar.casa380.venta._text.replace(',','.')).toFixed(2) + } + + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) } - - res.send(valores) - } catch(e) { - res.sendStatus(500) - console.log(e) } -} -/** - * @description Obtener el valor del dolar contado con liqui - * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta - */ -async function getContadoConLiqui(req, res){ - try { - const data = await dolarSi.getInfoDolar() - const valores = { - fecha : getDateTime(), - compra : parseFloat(data.cotiza.valores_principales.casa312.compra._text.replace(',','.')).toFixed(2), - venta : parseFloat(data.cotiza.valores_principales.casa312.venta._text.replace(',','.')).toFixed(2) + /** + * @description Obtener el valor del dolar contado con liqui + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getContadoConLiqui = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.valores_principales.casa312.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.valores_principales.casa312.venta._text.replace(',','.')).toFixed(2) + } + + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) } - res.send(valores) - } catch(e) { - res.sendStatus(500) - console.log(e) } -} -/** - * @description Obtener el valor del dolar promedio - * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta - */ -async function getDolarPromedio(req, res){ - try { - const data = await dolarSi.getInfoDolar() - const valores = { - fecha : getDateTime(), - compra : parseFloat(data.cotiza.cotizador.casa302.compra._text.replace(',','.')).toFixed(2), - venta : parseFloat(data.cotiza.cotizador.casa302.venta._text.replace(',','.')).toFixed(2) + /** + * @description Obtener el valor del dolar promedio + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarPromedio = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.cotizador.casa302.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.cotizador.casa302.venta._text.replace(',','.')).toFixed(2) + } + + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) } - - res.send(valores) - } catch(e) { - res.sendStatus(500) - console.log(e) } -} -/** - * @description Obtener el valor del dolar bolsa - * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta - */ -async function getDolarBolsa(req, res){ - try { - const data = await dolarSi.getInfoDolar() - const valores = { - fecha : getDateTime(), - compra : parseFloat(data.cotiza.valores_principales.casa313.compra._text.replace(',','.')).toFixed(2), - venta : parseFloat(data.cotiza.valores_principales.casa313.venta._text.replace(',','.')).toFixed(2) + /** + * @description Obtener el valor del dolar bolsa + * @returns Un objeto con el valor de compra, el de venta y la fecha y hora de la consulta + */ + getDolarBolsa = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + compra : parseFloat(data.cotiza.valores_principales.casa313.compra._text.replace(',','.')).toFixed(2), + venta : parseFloat(data.cotiza.valores_principales.casa313.venta._text.replace(',','.')).toFixed(2) + } + + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) } - - res.send(valores) - } catch(e) { - res.sendStatus(500) - console.log(e) } } - - -module.exports = { - getDolarOficial, - getDolarBlue, - getContadoConLiqui, - getDolarPromedio, - getDolarBolsa -} \ No newline at end of file +module.exports = dolarController \ No newline at end of file diff --git a/controller/riesgoController.js b/controller/riesgoController.js index 2048114..be5f641 100644 --- a/controller/riesgoController.js +++ b/controller/riesgoController.js @@ -1,5 +1,3 @@ -const dolarSi = require('../helpers/dolarSi') - function getDateTime() { var now = new Date(); var year = now.getFullYear(); @@ -18,24 +16,29 @@ function getDateTime() { return dateTime; } +class riesgoController{ + constructor(dolarSiService){ + this.dolarSiService = dolarSiService + } + + /** + * @description Obtener el valor del riesgo pais + * @returns Un objeto con el valor del riesgo pais y la fecha y hora de la consulta + */ + getRiesgoPais = async (req, res) => { + try { + const data = await this.dolarSiService.getInfoDolar() + const valores = { + fecha : getDateTime(), + valor : parseFloat(data.cotiza.Riesgo_pais.casa141.compra._text.replace(',','.')).toFixed(3), + } -/** - * @description Obtener el valor del riesgo pais - * @returns Un objeto con el valor del riesgo pais y la fecha y hora de la consulta - */ -async function getRiesgoPais(req, res){ - try { - const data = await dolarSi.getInfoDolar() - const valores = { - fecha : getDateTime(), - valor : parseFloat(data.cotiza.Riesgo_pais.casa141.compra._text.replace(',','.')).toFixed(3), + res.send(valores) + } catch(e) { + res.sendStatus(500) + console.log(e) } - - res.send(valores) - } catch(e) { - res.sendStatus(500) - console.log(e) } } -module.exports = { getRiesgoPais } \ No newline at end of file +module.exports = riesgoController \ No newline at end of file diff --git a/helpers/dolarSi.js b/helpers/dolarSi.js deleted file mode 100644 index 8039ee7..0000000 --- a/helpers/dolarSi.js +++ /dev/null @@ -1,21 +0,0 @@ -const convert = require('xml-js') -const axios = require('axios') - - -/** - * @description Obtener un json con los valores de dolarSi - */ -async function getInfoDolar(req, res){ - try { - const dataDolar = await axios.get("https://www.dolarsi.com/api/dolarSiInfo.xml") - const json = convert.xml2json(dataDolar.data, {compact: true, spaces: 4}); - const jsonParsed = JSON.parse(json); - - return jsonParsed - } catch(e) { - res.sendStatus(500) - console.log(e) - } -} - -module.exports = { getInfoDolar } \ No newline at end of file diff --git a/routes/router.js b/routes/router.js index 661136a..141384f 100644 --- a/routes/router.js +++ b/routes/router.js @@ -1,28 +1,45 @@ const express = require('express'); const router = express.Router(); -const dolarc = require('../controller/dolarController') -const bancoc = require('../controller/bancosController') -const riesgoc = require('../controller/riesgoController') + +const dolarSiService = require ('../services/dolarSiService') +const dolarSiServiceInstance = new dolarSiService() + +const dolarController = require('../controller/dolarController') +const dolarInstance = new dolarController(dolarSiServiceInstance) + +const bancoController = require('../controller/bancosController') +const bancoInstance = new bancoController(dolarSiServiceInstance) + +const riesgoController = require('../controller/riesgoController'); +const riesgoInstance = new riesgoController(dolarSiServiceInstance) /** * @description Rutas dolar */ -router.get('/api/dolaroficial', dolarc.getDolarOficial) -router.get('/api/dolarblue', dolarc.getDolarBlue) -router.get('/api/contadoliqui', dolarc.getContadoConLiqui) -router.get('/api/dolarpromedio', dolarc.getDolarPromedio) -router.get('/api/dolarbolsa', dolarc.getDolarBolsa) +router.get('/api/dolaroficial', dolarInstance.getDolarOficial) +router.get('/api/dolarblue', dolarInstance.getDolarBlue) +router.get('/api/contadoliqui', dolarInstance.getContadoConLiqui) +router.get('/api/dolarpromedio', dolarInstance.getDolarPromedio) +router.get('/api/dolarbolsa', dolarInstance.getDolarBolsa) /** * @description Rutas bancos */ -router.get('/api/bbva', bancoc.getDolarBBVA) +router.get('/api/bbva', bancoInstance.getDolarBBVA) +router.get('/api/piano', bancoInstance.getDolarPiano) +router.get('/api/hipotecario', bancoInstance.getDolarHipotecario) +router.get('/api/galicia', bancoInstance.getDolarGalicia) +router.get('/api/santander', bancoInstance.getDolarSantander) +router.get('/api/ciudad', bancoInstance.getDolarCiudad) +router.get('/api/supervielle', bancoInstance.getDolarSupervielle) +router.get('/api/patagonia', bancoInstance.getDolarPatagonia) +router.get('/api/comafi', bancoInstance.getDolarComafi) /** * @description Ruta riesgo pais */ -router.get('/api/riesgopais', riesgoc.getRiesgoPais) +router.get('/api/riesgopais', riesgoInstance.getRiesgoPais) module.exports = router \ No newline at end of file diff --git a/services/dolarSiService.js b/services/dolarSiService.js new file mode 100644 index 0000000..8357c30 --- /dev/null +++ b/services/dolarSiService.js @@ -0,0 +1,24 @@ +const convert = require('xml-js') +const axios = require('axios') + + +class dolarSiService { + + /** + * @description Obtener un json parseado con los valores de dolarSi + */ + getInfoDolar = async (req, res) => { + try { + const dataDolar = await axios.get("https://www.dolarsi.com/api/dolarSiInfo.xml") + const json = convert.xml2json(dataDolar.data, {compact: true, spaces: 4}); + const jsonParsed = JSON.parse(json); + + return jsonParsed + } catch(e) { + res.sendStatus(500) + console.log(e) + } + } +} + +module.exports = dolarSiService \ No newline at end of file