Skip to content
/ gocep Public
forked from jeffotoni/gocep

buscando cep em servidores publicos

Notifications You must be signed in to change notification settings

jg19/gocep

 
 

Repository files navigation

gocep

Um simples pacote para buscar ceps em bases publicas na internet utilizando concorência.

Atualizamos para buscar não somente de bases públicas como também busca do correios que é chamadas SOAPs e busca também de uma base que encontra-se no github.com em raw.

Podendo implementar para ter uma saída ainda mais completa conforme sua necessidade, então fique a vontade em alterar conforme seu cenário.

O server é extremamente rápido, e usa cache em memória ele está configurado para 2G de Ram, caso queira alterar está tudo bonitinho no /config.

Gocep também poderá ser usado como Lib, ou seja você irá conseguir fazer um import em seu pkg/searchcep e fazer a chamada direto do seu método em seu código.

Usar como Lib

package main

import (
	"fmt"
	"github.com/jeffotoni/gocep/pkg/cep"
)

func main() {

	result, err := cep.Search("6233903")
	fmt.Println(err)
	fmt.Println(result)
}

Ou se preferir for criar seu próprio serviço e sua api basta fazer como exemplo abaixo: Existe em examples dois exemplos de commo integrar a lib gocep em seu projeto.

func main() {

	mux := http.NewServeMux()
	mux.HandleFunc("/cep/", func(w http.ResponseWriter, r *http.Request){
		cepstr := strings.Split(r.URL.Path[1:], "/")[1]
		if len(cepstr) != 8 {
			w.WriteHeader(http.StatusBadRequest)
			return
		}

		result, err := cep.Search(cepstr)
		if err != nil {
			w.WriteHeader(http.StatusBadRequest)
			w.Write([]byte(result))
			return
		}

		w.WriteHeader(http.StatusOK)
		w.Write([]byte(result))
	})

	log.Fatal(http.ListenAndServe(":8080"))
}

Você pode fazer seu próprio build usando Go, ou você poderá utilizar docker-compose. O server irá funcionar na porta 8084, mas caso queira alterar basta ir na pasta /config.

Para subir o serviço para seu Servidor ou sua máquina local basta compilar, e a porta 8084 será aberta para consumir o endpoint /api/v1/{cep}

Install gocep

Caso queira utilizar ele como serviço, basta baixa-lo ou usar o docker para utilizado.

linux bash

$ git clone https://github.com/jeffotoni/gocep
$ cd gocep
$ go build -ldflags="-s -w" 
$ ./gocep
$ 2020/04/21 12:56:46 Port: :8084

docker e docker-compose

Deixei um script para facilitar a criação de sua imagem, todos os arquivos estão na raiz, docker-compose.yaml, Dockerfile tudo que precisa para personalizar ainda mais se precisar. Ao rodar o script ele irá fazer pull da imagem que encontra-se no hub.docker.

$ sh deploy.gocep.sh

Listando service

$ docker-compose ps
Creating gocep ... done
Name    Command   State           Ports         
------------------------------------------------
gocep   /gocep    Up      0.0.0.0:8084->8084/tcp
-e Generated Run docker-compose [ok] 

Executando sua API

$ curl -i http://localhost:8084/api/v1/08226021

out

$ {"cidade":"São Paulo","uf":"SP","logradouro":"18 de Abril","bairro":"Cidade Antônio Estevão de Carvalho"}

Temos uma estrutura padrão de retorno do JSON.

Struct Go

type WeCep struct {
	Cidade     string `json:"cidade"`
	Uf         string `json:"uf"`
	Logradouro string `json:"logradouro"`
	Bairro     string `json:"bairro"`
}

Saida Json

	{
		"cidade":"",
		"uf":"",
		"logradouro":"",
		"bairro":""
	}

About

buscando cep em servidores publicos

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 87.5%
  • Makefile 6.1%
  • Shell 3.7%
  • Dockerfile 2.7%