Skip to content

franknfjr/tec_solfacil_cep_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TecSolfacilCepApi

CI

A aplicação consiste em um usuário que vai chamar um endpoint passando um cep para buscar um endereço, caso o cep já exista na nossa base de dados retornar o endereço para o usuário, caso contrário buscar o endereço no ws https://viacep.com.br/ws/CEP/json/

Também foi criado um endpoint para gerar o arquivo CSV passando a lista dos endereços.

Informacoes Tecnicas

O projeto foi criado todo na linguagem Elixir na versão 1.12.3 utilizando o framwork Phoenix versão 1.6

Para fazer as taxas de conversão foi utilizado a API do ViaCEP

Para a persistência dos dados foi utilizado o PostgreSQL.

Outras bibliotecas que foram utilizadas:

  • Credo para garantir o estilo de código
  • CSV Parser de CSV
  • Finch cliente HTTP para fazer requisições
  • Guardian Guardian é uma biblioteca de autenticação baseada em token para uso com aplicativos Elixir.
  • Oban responsável por enfileirar e rodar jobs em background

Instalação

Execute os seguintes comandos:

git clone https://github.com/franknfjr/tec_solfacil_cep_api.git
cd tec_solfacil_cep_api

Após entrar no diretório, feito isso podemos fazer a compilação e excução da aplicação, executando os seguintes comandos:

mix deps.get
mix ecto.create && mix ecto.migrate

Funcionamento

Para início, vamos observar todas nossas rotas executando o comando:

mix phx.routes
Metodo endpoint descrição valores que podem ser passados para os parametros
GET /api/v1/register registra um usuário
GET /api/v1/login cria sessão de usuario
GET /api/v1/addresses/:cep retorna um endereço pelo cep cep
GET /api/v1/addresses/send_csv exporta o arquivo csv
* /dev/mailbox interface de email

Agora execute o comando para iniciar a aplicação.

mix phx.server

Requisições

Abaixo, alguns exemplos de chamadas que serão feitas nessa API:

POST /api/v1/register

O código HTTP de retorno deve ser 200 e o corpo esperado na resposta é:

{
	"message": "[email protected]",
	"status": "ok"
}

POST /api/v1/login

O código HTTP de retorno deve ser 200 e o corpo esperado na resposta é:

{
	"data": {
		"email": "[email protected]",
		"token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWNfc29sZmFjaWxfY2VwX2FwaSIsImV4cCI6MTY1MjQwNTExOCwiaWF0IjoxNjQ5OTg1OTE4LCJpc3MiOiJ0ZWNfc29sZmFjaWxfY2VwX2FwaSIsImp0aSI6IjNjZTYyNDQyLWYwOTMtNDdkZi04NGZjLTJiZjYyZjJhZTc2YiIsIm5iZiI6MTY0OTk4NTkxNywic3ViIjoiMiIsInR5cCI6ImFjY2VzcyJ9.7HOdYi7NAYF036uYRNLCnlZkJLp_laiyLZZ_dlnwYOHiuXXQIiC0OjcKa2UD-8APdaEFsm5UVd_L2nsCjV3OWQ"
	},
	"message": "You are successfully logged in! Add this token to authorization header to make authorized requests.",
	"status": "ok"
}

GET /api/v1/addresses/:cep

O código HTTP de retorno deve ser 200 e o corpo esperado na resposta é:

{
	"data": {
		"bairro": "Maguari",
		"cep": "67145037",
		"complemento": "(Cj PAAR)",
		"ddd": "91",
		"ibge": "1500800",
		"localidade": "Ananindeua",
		"logradouro": "Quadra Cem",
		"siafi": "0415",
		"uf": "PA"
	}
}

GET /api/v1/addresses/send_csv

O código HTTP de retorno deve ser 202 e o corpo esperado na resposta é:

{
	"message": "Accepted",
	"status": 202
}

About

~"desafio solfacil"~

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages