1 | <p align="center">
|
2 | <img src="https://raw.githubusercontent.com/filipedeschamps/cep-promise/master/content/logo.gif">
|
3 | </p>
|
4 |
|
5 | <h1 align="center">CEP Promise</h1>
|
6 |
|
7 | <p align="center">
|
8 | <a href="https://travis-ci.org/filipedeschamps/cep-promise">
|
9 | <img src="https://travis-ci.org/filipedeschamps/cep-promise.svg?branch=master">
|
10 | </a>
|
11 | <a href="https://coveralls.io/github/filipedeschamps/cep-promise?branch=master">
|
12 | <img src="https://coveralls.io/repos/github/filipedeschamps/cep-promise/badge.svg?branch=master">
|
13 | </a>
|
14 | <a href="https://www.npmjs.com/package/cep-promise">
|
15 | <img src="https://badge.fury.io/js/cep-promise.svg">
|
16 | </a>
|
17 | <a href="http://standardjs.com/">
|
18 | <img src="https://img.shields.io/badge/code%20style-standard-brightgreen.svg">
|
19 | </a>
|
20 | </p>
|
21 |
|
22 | <p align="center">
|
23 | Busca por CEP integrado diretamente aos serviços dos Correios e ViaCEP (Node.js e Browser)
|
24 | </p>
|
25 |
|
26 | ## Features
|
27 |
|
28 | * Sempre atualizado em tempo-real por se conectar diretamente aos serviços dos Correios ou ViaCEP
|
29 | * Possui alta disponibilidade por usar serviços como fallback
|
30 | * Sempre retorna a resposta mais rápida por fazer as consultas de forma concorrente
|
31 | * Sem limites de uso (rate limits) conhecidos
|
32 | * Interface de Promise extremamente simples
|
33 | * Suporte ao Node.js `0.10.x`, `0.12.x`, `4.x`, `5.x`, `6.x` e `7.x`
|
34 | * 100% de code coverage com testes unitários e E2E
|
35 | * Desenvolvido utilizando ES6
|
36 |
|
37 |
|
38 | ## Como utilizar
|
39 |
|
40 |
|
41 | ### Instalação
|
42 |
|
43 | ```
|
44 | $ npm install --save cep-promise
|
45 | ```
|
46 |
|
47 |
|
48 | ### Realizando uma consulta
|
49 |
|
50 | Por ser multifornecedor, a biblioteca irá resolver a Promise com o fornecedor que mais rápido lhe responder.
|
51 |
|
52 | ``` js
|
53 | import cep from 'cep-promise'
|
54 |
|
55 | cep('05010000')
|
56 | .then(console.log)
|
57 |
|
58 | // {
|
59 | // "zipcode": "05010000",
|
60 | // "state": "SP",
|
61 | // "city": "São Paulo",
|
62 | // "street": "Rua Caiubí",
|
63 | // "neighborhood": "Perdizes",
|
64 | // }
|
65 | ```
|
66 |
|
67 |
|
68 | ### Você também poderá passar o CEP como Inteiro
|
69 |
|
70 | Em muitos sistemas o CEP é utilizado erroneamente como um Inteiro (e com isto cortanto todos os zeros à esquerda). Caso este seja o seu caso, não há problema, pois a biblioteca irá preencher os caracteres faltantes na String, por exemplo:
|
71 |
|
72 | ``` js
|
73 | import cep from 'cep-promise'
|
74 |
|
75 | // enviando sem ter um zero à esquerda do CEP "05010000"
|
76 | cep(5010000)
|
77 | .then(console.log)
|
78 |
|
79 | // {
|
80 | // "zipcode": "05010000",
|
81 | // "state": "SP",
|
82 | // "city": "São Paulo",
|
83 | // "street": "Rua Caiubí",
|
84 | // "neighborhood": "Perdizes",
|
85 | // }
|
86 | ```
|
87 |
|
88 | ### Quando o CEP não é encontrado
|
89 |
|
90 | Neste caso será retornado um `"service_error"` e por ser multifornecedor, a biblioteca irá rejeitar a Promise apenas quando tiver a resposta negativa de todos os fornecedores.
|
91 |
|
92 | ``` js
|
93 | import cep from 'cep-promise'
|
94 |
|
95 | cep('99999999')
|
96 | .catch(console.log)
|
97 |
|
98 | // {
|
99 | // message: 'Todos os serviços de CEP retornaram erro.',
|
100 | // type: 'service_error',
|
101 | // errors: [{
|
102 | // message: 'CEP NAO ENCONTRADO',
|
103 | // service: 'correios'
|
104 | // }, {
|
105 | // message: 'CEP não encontrado na base do ViaCEP.',
|
106 | // service: 'viacep'
|
107 | // }]
|
108 | // }
|
109 |
|
110 | ```
|
111 |
|
112 | ### Quando o CEP possui um formato inválido
|
113 |
|
114 | Neste caso será retornado um `"validation_error"` e a biblioteca irá rejeitar imediatamente a Promise, sem chegar a consultar nenhum fornecedor.
|
115 |
|
116 | ``` js
|
117 | import cep from 'cep-promise'
|
118 |
|
119 | cep('123456789123456789')
|
120 | .catch(console.log)
|
121 |
|
122 | // {
|
123 | // message: 'CEP deve conter exatamente 8 caracteres.',
|
124 | // type: 'validation_error',
|
125 | // errors: [{
|
126 | // message: 'CEP informado possui mais do que 8 caracteres.',
|
127 | // service: 'cep_validation'
|
128 | // }]
|
129 | // }
|
130 | ```
|
131 |
|
132 | ## Contribuidores
|
133 |
|
134 | | [<img src="https://avatars1.githubusercontent.com/u/8251208?v=3&s=115"><br><sub>@lucianopf</sub>](https://github.com/lucianopf) | [<img src="https://avatars1.githubusercontent.com/u/7863230?v=3&s=115"><br><sub>@MarcoWorms</sub>](https://github.com/MarcoWorms) | [<img src="https://avatars1.githubusercontent.com/u/551228?v=3&s=115"><br><sub>@caio-ribeiro-pereira</sub>](https://github.com/caio-ribeiro-pereira) | [<img src="https://avatars1.githubusercontent.com/u/1225447?v=3&s=115"><br><sub>@chrisbenseler</sub>](https://github.com/chrisbenseler) | [<img src="https://avatars0.githubusercontent.com/u/3428149?v=3&s=115"><br><sub>@luanmuniz</sub>](https://github.com/luanmuniz) | [<img src="https://avatars3.githubusercontent.com/u/3094496?v=3&s=115"><br><sub>@AlbertoTrindade</sub>](https://github.com/AlbertoTrindade) |
|
135 | |:-:|:-:|:-:|:-:|:-:|:-:|
|
136 | | [<img src="https://avatars1.githubusercontent.com/u/4137355?v=3&s=115"><br><sub>@pedrro</sub>](https://github.com/pedrro) |
|
137 |
|
138 |
|
139 | ## Autor
|
140 |
|
141 | | [<img src="https://avatars0.githubusercontent.com/u/4248081?v=3&s=115"><br><sub>@filipedeschamps</sub>](https://github.com/filipedeschamps) |
|
142 | | :---: |
|