{"id":18023570,"url":"https://github.com/jeffotoni/gocep","last_synced_at":"2025-03-27T00:30:38.298Z","repository":{"id":57529064,"uuid":"256421284","full_name":"jeffotoni/gocep","owner":"jeffotoni","description":"Um simples pacote para buscar ceps em bases públicas na internet utilizando concorrência. Você também pode extender e buscar sua própria base de Ceps se desejar. Está configurado para buscar em: viacep, postmon cep, republicavirtual, Correio, github api.cep, cdn api cep.","archived":false,"fork":false,"pushed_at":"2023-08-12T17:24:20.000Z","size":49494,"stargazers_count":21,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-22T17:24:34.909Z","etag":null,"topics":["go","golang","hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeffotoni.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-17T06:30:47.000Z","updated_at":"2023-05-27T18:18:34.000Z","dependencies_parsed_at":"2024-06-19T10:01:59.445Z","dependency_job_id":"c9a90312-7237-481e-a90c-e247f3c4c163","html_url":"https://github.com/jeffotoni/gocep","commit_stats":{"total_commits":175,"total_committers":5,"mean_commits":35.0,"dds":0.0971428571428572,"last_synced_commit":"2eeef1b5cb8e91ea5c148d63344fe2024abe53df"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffotoni%2Fgocep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffotoni%2Fgocep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffotoni%2Fgocep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffotoni%2Fgocep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeffotoni","download_url":"https://codeload.github.com/jeffotoni/gocep/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245760541,"owners_count":20667886,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","hacktoberfest"],"created_at":"2024-10-30T07:09:56.400Z","updated_at":"2025-03-27T00:30:38.042Z","avatar_url":"https://github.com/jeffotoni.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gocep\n[![GoDoc](https://godoc.org/github.com/jeffotoni/gocep?status.svg)](https://godoc.org/github.com/jeffotoni/gocep) [![Github Release](https://img.shields.io/github/v/release/jeffotoni/gocep?include_prereleases)](https://img.shields.io/github/v/release/jeffotoni/gocep) [![CircleCI](https://dl.circleci.com/status-badge/img/gh/jeffotoni/gocep/tree/master.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/jeffotoni/gocep/tree/master) [![Go Report](https://goreportcard.com/badge/github.com/jeffotoni/gocep)](https://goreportcard.com/badge/github.com/jeffotoni/gocep) [![License](https://img.shields.io/github/license/jeffotoni/gocep)](https://img.shields.io/github/license/jeffotoni/gocep) ![CircleCI](https://img.shields.io/circleci/build/github/jeffotoni/gocep/master) ![Coveralls](https://img.shields.io/coverallsCoverage/github/jeffotoni/gocep)\n\u003c!-- \n[![Vulnerabilities](https://snyk.io/test/github/jeffotoni/gocep/badge.svg)](https://snyk.io/test/github/jeffotoni/gocep) --\u003e\n\nUm simples pacote para buscar ceps em bases públicas na internet utilizando *concorrência*.\nAtualizamos 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 [ceps github](https://raw.githubusercontent.com/jeffotoni/api.cep/master/v1/cep/) em raw.\n\nVocê também pode extender e buscar sua própria base de Ceps se desejar consultar em sua própria base de dados.\n\nEstá configurado para buscar em: \n - viacep \n - Postmon cep \n - Republicavirtual \n - Correio \n - github Raw Cep\n - Cdn api cep\n - Brasil Api\n\nPodendo implementar para ter uma saída ainda mais completa conforme sua necessidade, então fique a vontade em alterar conforme seu cenário.\n\nO 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.\n\n#### Fazendo chamadas do gocep em outras Langs\n\nDa uma conferida em alguns examplos aqui de como fazer chamadas do gocep em diversas linguagens:\n - nodejs\n - python\n - php\n - javascript\n - go lib\n - go server\n - go client\n - rust\n - C\n - C++\n\n[exemplos](https://github.com/jeffotoni/gocep/tree/master/examples)\n\nVocê pode fazer seu próprio build usando Go, ou você poderá utilizar docker-compose. \nO server irá funcionar na porta 8080, mas caso queira alterar basta ir na pasta /config.\n\nPara subir o serviço para seu Servidor ou sua máquina local basta compilar, e a porta 8080 será aberta para consumir o endpoint /v1/cep/{cep}\n\nTudo muito legal não é ?? ❤️😍😍\n\n#### Install gocep\n\nCaso queira utilizar ele como serviço, basta baixa-lo ou usar o docker para utilizado.\n\n#### linux bash\n```bash\n$ git clone https://github.com/jeffotoni/gocep\n$ cd gocep\n$ CGO_ENABLED=0 go build -ldflags=\"-s -w\" \n$ ./gocep\n$ 2020/04/21 12:56:46 Port: 0.0.0.0:8080\n\n```\n\n#### docker e docker-compose\n\nDeixei 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.\n\n```bash\nversion: '3.5'\n\nservices:\n  gocep:\n    image: jeffotoni/gocep\n    container_name: gocep\n    hostname: gocep\n    domainname: gocep.local.com\n    environment:\n      - \"TZ=America/Sao_Paulo\"\n      - \"API_ENV=prod\"\n    networks:\n        guulawork:\n           aliases:\n              - gocep.local.com\n    ports:\n      - 8080:8080\n    restart: always\n\nnetworks:\n  guulawork:\n      driver: bridge\n\n```\n\nAo rodar o script ele irá fazer pull da imagem que encontra-se no hub.docker.\n```bash\n\n$ make compose\n\n```\n\n#### Listando service\n```bash\n$ docker-compose ps\nCreating gocep ... done\nName    Command   State           Ports         \n------------------------------------------------\ngocep   /gocep    Up      0.0.0.0:8080-\u003e8080/tcp\n-e Generated Run docker-compose [ok] \n\n```\n\n#### Executando sua API\n```bash\n\n$ curl -i -XGET http://localhost:8080/v1/cep/08226021\nHTTP/1.1 200 OK\nContent-Type: application/json\nDate: Sun, 19 Feb 2023 13:15:03 GMT\nContent-Length: 112\n{\n\t\"cidade\":\"São Paulo\",\n\t\"uf\":\"SP\",\n\t\"logradouro\":\"18 de Abril\",\n\t\"bairro\":\"Cidade Antônio Estevão de Carvalho\"\n}\n\n```\n\n#### Docker\n\nTambém poderá usar o Docker se desejar\n\n```bash\n$ docker run --name gocep --rm -p 8080:8080 jeffotoni/gocep:latest\n2023/02/19 17:12:03 Server Run Port 0.0.0.0:8080\n2023/02/19 17:12:03 /v1/cep/:cep\n\n$ curl -i -XGET http://localhost:8080/v1/cep/08226021\nHTTP/1.1 200 OK\nContent-Type: application/json\nDate: Sun, 19 Feb 2023 13:15:03 GMT\nContent-Length: 112\n{\n\t\"cidade\":\"São Paulo\",\n\t\"uf\":\"SP\",\n\t\"logradouro\":\"18 de Abril\",\n\t\"bairro\":\"Cidade Antônio Estevão de Carvalho\"\n}\n```\n\n#### Usar como Lib\n\nGocep 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.\n\n```go\n\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/jeffotoni/gocep/pkg/cep\"\n)\n\nfunc main() {\n\tresult, wecep, err := cep.Search(\"6233903\")\n\tfmt.Println(err)\n\tfmt.Println(result) // json\n\tfmt.Println(wecep) // object WeCep\n}\n\n```\n\nOu se preferir for criar seu próprio serviço em Go e sua api basta fazer como exemplo abaixo:\n\n#### Criando seu próprio WebServer usando gocep\n```bash\npackage main\n\nimport (\n\t\"log\"\n\t\"net/http\"\n\t\"fmt\"\n\t\"github.com/jeffotoni/gocep/pkg/cep\"\n)\n\nfunc main() {\n\tmux := http.NewServeMux()\n\tmux.HandleFunc(\"/cep/\", func(w http.ResponseWriter, r *http.Request){\n\t\tw.Header().Add(\"Content-Type\", \"application/json\")\n\t\tcepstr := strings.Split(r.URL.Path[1:], \"/\")[1]\n\t\tif len(cepstr) != 8 {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tresult, wecep, err := cep.Search(cepstr)\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\tw.Write([]byte(result))\n\t\t\treturn\n\t\t}\n\n\t\tif !cep.ValidCep(wecep) {\n\t\t\tw.WriteHeader(http.StatusNoContent)\n\t\t\treturn\n\t\t}\n\t\t\n\t\tw.WriteHeader(http.StatusOK)\n\t\tw.Write([]byte(result))\n\t})\n\tlog.Fatal(http.ListenAndServe(\"0.0.0.0:8080\"))\n}\n```\nTemos uma estrutura padrão de retorno do JSON.\n\n#### Struct Go\n```go\n\ntype WeCep struct {\n\tCidade     string `json:\"cidade\"`\n\tUf         string `json:\"uf\"`\n\tLogradouro string `json:\"logradouro\"`\n\tBairro     string `json:\"bairro\"`\n}\n\n```\n\n#### Saida Json\n```json\n\n\t{\n\t\t\"cidade\":\"\",\n\t\t\"uf\":\"\",\n\t\t\"logradouro\":\"\",\n\t\t\"bairro\":\"\"\n\t}\n\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffotoni%2Fgocep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffotoni%2Fgocep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffotoni%2Fgocep/lists"}