diff --git a/README.md b/README.md index a403593..ad7bddc 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Busca por ceps do Brasil utilizando o serviço ViaCEP ```javascript var buscaCep = require('busca-cep'); -buscaCep('01001-000') +buscaCep('01001-000', {sync: false, timeout: 1000}}) .then(endereco => { console.log(endereco); }) @@ -26,12 +26,14 @@ buscaCep('01001-000') Ou, caso você queira uma requisição síncrona, passe true no segundo parâmetro: ```javascript -var resposta = buscaCep('01001-000', true);//Também pode ser usado buscaCep('01001-000', {sync: true}); +var resposta = buscaCep('01001-000', {sync: true, timeout: 1000}); if (!resposta.hasError) { console.log(resposta); } else { console.log(`Erro: statusCode ${resposta.statusCode} e mensagem ${resposta.message}`); } + +O terceiro parâmetro da função é um options, nele você você pode setar o valor do timeout do request (em milisegundos) ``` Enjoy it! diff --git a/index.js b/index.js index a09a2f3..2b8405e 100644 --- a/index.js +++ b/index.js @@ -6,12 +6,12 @@ const requestPromise = require('request-promise'), const CEP_SIZE = 8, VIACEP_URI = config.apiViaCep.url; -const callViaCep = cep => { +const callViaCep = (cep, options) => { let requestOptions = { json: true, - uri: `${VIACEP_URI}/ws/${cep}/json` + uri: `${VIACEP_URI}/ws/${cep}/json`, + timeout: options ? options.timeout : 5000 }; - return requestPromise(requestOptions); } @@ -27,7 +27,7 @@ const getValidationMessage = () => { return `The CEP should be a number or string of size ${CEP_SIZE}. Please check your parameter.`; } -const getDataSync = cep => { +const getDataSync = (cep) => { let ret; try { if (invalidCep(cep)) { @@ -46,12 +46,12 @@ const getDataSync = cep => { return ret; } -const getDataAsync = cep => { +const getDataAsync = (cep, options) => { return new Promise((resolve, reject) => { if (invalidCep(cep)) { reject({ message: getValidationMessage() }); } else { - callViaCep(cep) + callViaCep(cep, options) .then(placeInfo => { resolve(placeInfo); }) @@ -62,11 +62,11 @@ const getDataAsync = cep => { }); } -module.exports = function getDetailsByZipCode (cep, sync) { +module.exports = function getDetailsByZipCode (cep, options) { if (!_.isEmpty(cep) && isNaN(cep)) { cep = cep.replace(/[-\s]/g, ''); } - return (sync === true || (arguments[1] && arguments[1].sync)) ? + return (options === true || (options && options.sync)) ? getDataSync(cep) : - getDataAsync(cep); + getDataAsync(cep, options); }; \ No newline at end of file diff --git a/package.json b/package.json index 0defc19..22b5b57 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "busca-cep", - "version": "0.3.6", + "version": "0.4.0", "author": { "name": "Wagner Resende Santos", "email": "w.rsantos@outlook.com", diff --git a/test/index.test.js b/test/index.test.js index 85a8ee6..9382c37 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -29,7 +29,7 @@ function makeDefaultNock(cep) { describe('Zip search module', () => { it('Should get a valid response when passing a valid zip code', (done) => { - const zipCode = getDetailsByZipCode('31652130', { sync: true }); + const zipCode = getDetailsByZipCode('31652130', true); expect(zipCode).to.deep.equal(DEFAULT_RESPONSE); done(); }).timeout(5000); @@ -56,7 +56,7 @@ describe('Zip search module', () => { }); it('Should return an error message when passing wrong parameter', () => { - const result = getDetailsByZipCode('wrong', true); + const result = getDetailsByZipCode('wrong', {sync: true}); expect(result.hasError).to.be.true; expect(result.message).to.equal('The CEP should be a number or string of size 8. Please check your parameter.'); });