├── .gitignore ├── index.js ├── .npmignore ├── test.js ├── package.json ├── README.md └── lib └── indicadoresEconomicosBCCR.js /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/* -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/indicadoresEconomicosBCCR'); -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # https://gist.github.com/marcossffilho/ea0ce441b126ff4b4ca2 2 | .lock-wscript 3 | .gitignore 4 | .svn/ 5 | .hg/ 6 | .git/ 7 | CVS/ 8 | *~ 9 | *.bak 10 | *.kate-swp 11 | node_modules/ 12 | npm-debug.log -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | const indicadoresEconomicosBCCR = require('./index'); 2 | 3 | indicadoresEconomicosBCCR().then((data) => { 4 | console.log("Compra y Venta del día de hoy:"); 5 | console.log(data); 6 | }); 7 | 8 | indicadoresEconomicosBCCR('20/04/2018', '20/04/2018').then((data) => { 9 | console.log("Compra y Venta por fecha:"); 10 | console.log(data); 11 | }); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "indicadores-economicos-bccr", 3 | "version": "2.0.0", 4 | "description": "Obtenga el tipo de cambio del dólar del web service del Banco Central de Costa Rica.", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "node test.js" 8 | }, 9 | "keywords": [ 10 | "\"indicadores", 11 | "economicos\"", 12 | "\"BCCR\"", 13 | "\"colones\"", 14 | "\"dolares\"", 15 | "\"compra\"", 16 | "\"venta\"", 17 | "\"tipo de cambio\"" 18 | ], 19 | "author": "Luis Esteban López Acuña", 20 | "license": "ISC", 21 | "dependencies": { 22 | "axios": "^0.18.0", 23 | "xmldom": "^0.1.27" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Indicadores Economicos BCCR 2 | 3 | > Obtenga el tipo de cambio del dólar del web service del Banco Central de Costa Rica. 4 | 5 | ## Instalación 6 | 7 | npm install indicadores-economicos-bccr 8 | 9 | ## Pre-requisitos 10 | 11 | Para poder obtener el tipo de cambio debe estar suscrito a los servicios del Banco Centra de Costa Rica [Servicio web](https://www.bccr.fi.cr/seccion-indicadores-economicos/servicio-web) 12 | 13 | Dado que ahora es requerido enviar el correo electrónico y el token asignado en cada request. 14 | 15 | ## Uso 16 | 17 | Obtener el tipo de cambio del dólar del día actual: 18 | 19 | ```javascript 20 | indicadoresEconomicosBCCR.get(EMAIL, TOKEN).then(tipoDeCambio => { 21 | // { compra: 500.00, venta: 500.00 } 22 | }); 23 | ``` 24 | 25 | Obtener el tipo de cambio del dólar de una fecha de inicio a una fecha final: 26 | 27 | ```javascript 28 | indicadoresEconomicosBCCR(EMAIL, TOKEN, "01/01/2018", "02/01/2018").then( 29 | tipoDeCambio => { 30 | // { compra: 500.00, venta: 500.00 } 31 | } 32 | ); 33 | ``` 34 | 35 | ## Meta 36 | 37 | Luis Esteban López Acuña – [@estlopacu](https://twitter.com/estlopacu) – estlopacu@gmail.com 38 | 39 | [https://github.com/estlopacu/indicadores-economicos-bccr](https://github.com/estlopacu/) 40 | -------------------------------------------------------------------------------- /lib/indicadoresEconomicosBCCR.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var axios = require('axios'); 4 | var querystring = require('querystring'); 5 | var DOMParser = require('xmldom').DOMParser; 6 | 7 | module.exports.default = indicadoresEconomicosBCCR; 8 | module.exports = indicadoresEconomicosBCCR; 9 | 10 | function indicadoresEconomicosBCCR(email, token, fechaInicio, fechaFinal) { 11 | try { 12 | var todayDate = new Date(); 13 | var BCCRurl = 'https://gee.bccr.fi.cr/Indicadores/Suscripciones/WS/wsindicadoreseconomicos.asmx/ObtenerIndicadoresEconomicos'; 14 | var payload = { 15 | FechaInicio: fechaInicio ? fechaInicio : todayDate.getDate() + "/" + (todayDate.getMonth() + 1) + "/" + todayDate.getFullYear(), 16 | FechaFinal: fechaFinal ? fechaFinal : todayDate.getDate() + "/" + (todayDate.getMonth() + 1) + "/" + todayDate.getFullYear(), 17 | Nombre: 'N', 18 | SubNiveles: 'N', 19 | Indicador: 317, 20 | CorreoElectronico: email, 21 | Token: token, 22 | }; 23 | var postCompra = axios.post(BCCRurl, querystring.stringify(payload)); 24 | 25 | payload.Indicador = 318; 26 | 27 | var postVenta = axios.post(BCCRurl, querystring.stringify(payload)); 28 | 29 | return axios.all([postCompra, postVenta]).then(axios.spread(function (compra, venta) { 30 | var compraNode = new DOMParser().parseFromString(compra.data, 'text/xml'); 31 | var ventaNode = new DOMParser().parseFromString(venta.data, 'text/xml'); 32 | 33 | return { 34 | 'compra': Math.pow(parseFloat(compraNode.documentElement.getElementsByTagName('NUM_VALOR')[0].childNodes[0].nodeValue).toFixed(2), 1), 35 | 'venta': Math.pow(parseFloat(ventaNode.documentElement.getElementsByTagName('NUM_VALOR')[0].childNodes[0].nodeValue).toFixed(2), 1) 36 | }; 37 | })); 38 | 39 | } catch (error) { 40 | throw new Error(error); 41 | } 42 | 43 | }; --------------------------------------------------------------------------------