UNPKG

api-datos-gob-mx

Version:
40 lines (30 loc) 827 B
const request = require('request'); const { promisify } = require('util'); const apiUrl = 'https://api.datos.gob.mx/v1/'; const getRequest = promisify(request.get.bind(request)); const getApiCaller = (pathApi) => { let totalObtained = 0; const apiEndpoint = (qs = {}) => getRequest({ uri: apiUrl + pathApi, qs, }) .then(res => JSON.parse(res.body)) .then(({ error, details, pagination: { page, pageSize, total, }, results, }) => { if (error) return Promise.reject(details); if (!results.length) return results; totalObtained += results.length; if (total <= totalObtained) return results; return results.concat(apiEndpoint({ page: page + 1 })); }); return apiEndpoint; }; module.exports = getApiCaller;