UNPKG

4.8 kBMarkdownView Raw
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
50Por ser multifornecedor, a biblioteca irá resolver a Promise com o fornecedor que mais rápido lhe responder.
51
52``` js
53import cep from 'cep-promise'
54
55cep('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
70Em 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
73import cep from 'cep-promise'
74
75// enviando sem ter um zero à esquerda do CEP "05010000"
76cep(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
90Neste 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
93import cep from 'cep-promise'
94
95cep('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
114Neste caso será retornado um `"validation_error"` e a biblioteca irá rejeitar imediatamente a Promise, sem chegar a consultar nenhum fornecedor.
115
116``` js
117import cep from 'cep-promise'
118
119cep('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| :---: |