UNPKG

codigos-gob-bo

Version:

Node.js, cliente para obtener informacion de codigos.gob.bo

148 lines (133 loc) 3.97 kB
/** * Node.js, cliente para obtener informacion de codigos.gob.bo. * * Módulo de peticiones a codigos.gob.bo y uso de promise para simplificar las funciones. * No requiere autenticacion codigos.gob.bo ofrece informacion abierta en distintos formatos. * * @module codigos-gob-bo * @author Teodoro Nina <tnina@adsib.gob.bo> * @license LPG-Bolivia */ "use strict"; var request_promise = require("request-promise"); var Promise = require("bluebird"); module.exports = { /** * Definiendo una instancia * * @method * @returns {Promise} */ ini: function (parametros) { parametros = parametros || {}; var c = new codigos(parametros); if (!vacio(c.url)) { return Promise.resolve(c); }else{ return Promise.reject("Error: en la url."); } }//inicio }//export module //region inicializando nuestros parametros function codigos(parametros) { var this_ = this; //definiendo nuestro array this_.url = null; //recuperando parametros parametros = parametros || {}; //verificando los elementos en array if ("mensaje" in parametros) { this_.mensajes = parametros.mensajes; }else{ this_.mensajes = { warn: function() {}, error: function() {} }; }//mensaje in if ("url" in parametros) { if(!vacio(parametros.url)){ this_.url = parametros.url; }else{ this_.mensajes.error('La (url) no puede ser vacio.'); } }//url in }; //end region inicializando nuestros parametros //region para realizar la llamada a la urlCodigos codigos.prototype.call = function (opciones) { var this_ = this; var tipoElemento; var itemId; var formato; var args = {}; var formatosValidos = ["json","csv", "xml"] if ("tipoElemento" in opciones) { if(!vacio(opciones.tipoElemento)){ tipoElemento = opciones.tipoElemento; }else{ this_.mensajes.error("[call] Tipo elemento no tiene valor."); return Promise.reject("Tipo elemento no tiene valor."); } } else { this_.mensajes.error("[call] Falta tipo elemento para procesar."); return Promise.reject("Falta tipo elemento para procesar."); }//tipoElemento if ("formato" in opciones) { if(!vacio(opciones.formato)){ formato = opciones.formato; }else{ this_.mensajes.error("[call] Formato no tiene valor."); return Promise.reject("Tipo formato no tiene valor."); } } else { this_.mensajes.error("[call] Falta formato para procesar."); return Promise.reject("Falta formato para procesar."); }//formato if ("args" in opciones) { if(opciones.args){ itemId = opciones.args.codigo; }else{ itemId = null; this_.mensajes.error("[call] Argumento puede contener id:id."); return Promise.reject("Argumento puede contener id:id."); } } else { itemId = null; }//args if(vacio(itemId)){ var request_opciones = { uri: this_.url + "/" + tipoElemento + "?formato="+formato, json: true, method: "GET" } }else{ var request_opciones = { uri: this_.url + "/" + tipoElemento + "/"+itemId+"?formato="+formato, json: true, method: "GET" } } // return request_promise(this_.url + "/" + elemento + "?formato="+formato) // .then((html) => console.log(html)) // Process html... // .catch((err) => console.error(err)); // Crawling failed... console.log(request_opciones); return request_promise(request_opciones) .then((respuesta) => { console.log(respuesta) // Process respuesta... return respuesta; }) .catch((err) =>{ console.error(err); return err; }); // fallo... }//end call //end region para realizar la llamada a la urlCodigos //region perifica vacio o null function vacio(str){ if(str == "" || str == null) { return true; } return false; }; //end region perifica vacio o null