UNPKG

node-correios

Version:

Node.js module for the Brazilian mail service, Correios

87 lines (71 loc) 2.33 kB
let soap = require('soap'); let request = require('request'); module.exports = class Correios { constructor(width) { this.calcPrecoUrl = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?wsdl'; this.cepUrl = 'http://viacep.com.br/ws/{CEP}/json'; this.calcArgs = { nCdEmpresa : '', sDsSenha : '', sCdMaoPropria : 'N', nVlValorDeclarado : 0, sCdAvisoRecebimento: 'N' }; } calcPreco(args) { let arg = Object.assign({}, this.calcArgs, args); return new Promise((resolve, reject) => { soap.createClient(this.calcPrecoUrl, (error, client) => { if ( error ) return reject(error); client.CalcPreco(arg, (error, result) => { if (!error && result && result.CalcPrecoResult && result.CalcPrecoResult.Servicos && result.CalcPrecoResult.Servicos.cServico) { return resolve(result.CalcPrecoResult.Servicos.cServico); } return reject(error); }); }); }) } calcPrecoPrazo(args) { let arg = Object.assign({}, this.calcArgs, args); return new Promise((resolve, reject) => { soap.createClient(this.calcPrecoUrl, (error, client) => { if ( error ) return reject(error); client.CalcPrecoPrazo(arg, (error, result) => { if (!error && result && result.CalcPrecoPrazoResult && result.CalcPrecoPrazoResult.Servicos && result.CalcPrecoPrazoResult.Servicos.cServico) { return resolve(result.CalcPrecoPrazoResult.Servicos.cServico) } return reject(error); }); }); }); } consultaCEP(args) { let arg = Object.assign({}, args); if ('cep' in arg === false) { throw new Error('You need to inform a CEP ex: { cep: 00000000 }'); } return new Promise((resolve, reject) => { let url = this.cepUrl.replace('{CEP}', arg.cep.replace('-', '')); request(url, (error, resp, body) => { if (error) { return reject(error); } try { return resolve(JSON.parse(body)) } catch (e) { return reject({ Erro: 404, MsgErro: 'Cep não encontrado' }); } }); }); } }