JayaCurrencyConverter
A aplicação conversor de moedas é uma API REST, chamada Jaya Currency Converter, com objetivo de converter valores de uma moeda de origem para uma moeda de destino.
Você pode fazer a conversão nas seguintes moedas:
- Real brasileiro
- Dólar americano
- Euro
- Iene japonês
As moedas serão referidas com o padrão internacional para facilitar a explicação.
Informacoes Tecnicas
O projeto foi criado todo na linguagem Elixir na versão 1.11.4 utilizando o framwork Phoenix versão 1.5.13.
Para fazer as taxas de conversão foi utilizado a API do Exchangeratesapi.io
Para a persistência dos dados foi utilizado o PostgreSQL.
Outras bibliotecas que foram utilizadas:
- credo para garantir qualidade
- sobelow para checar as vulnerabilities do projeto
- excoveralls manter a cobertura e relatório de testes
- tesla cliente HTTP para fazer requisições
- Arquivos licença e changelog como documentação e qualidade de entrega
Instalação
Execute os seguintes comandos:
git clone https://github.com/franknfjr/jaya_currency_converter
cd jaya_currency_converter
Após entrar no diretório, existe um arquivo .env.sample que é obrigatório inserir o valor da API_KEY para carregar em variáveis de ambiente.
Caso você não tenha uma API_KEY, é preciso se registrar no site
Altere o arquivo .env.sample para .env
Execute o seguinte comando:
source .envFeito isso podemos fazer a compilação e excução da aplicação, executando os seguintes comandos:
mix deps.get
mix ecto.create && mix ecto.migrateFuncionamento
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 | / | exibe o texto #JayaCurrencyConverter |
GET | /api/users | lita todos usuarios |
GET | /api/users/:id | lista um usuario específico | id
POST | /api/users | esse endpoint cria um usuario | name
GET | /api/users/:user_id/transactions | lista todas transações de um usuário | user_id
GET | /api/users/:user_id/transactions/:id | lista uma transação específica de um usuário | user_id, id
POST | /api/users/:user_id/transactions | cria uma transação | user_id, amount, currency_from, currency_to
| ⚠️ |
Todos os campos id seguem o format de UUID |
|---|
Agora execute o comando para iniciar a aplicação.
mix phx.serverAbaixo, alguns exemplos de chamadas que serão feitas nessa API:
POST /api/users
curl --request POST \
--url http://localhost:4000/api/users \
--header 'Content-Type: application/json' \
--data '{
"user": {
"name": "Frank"
}
}'O código HTTP de retorno deve ser 201 e o corpo esperado na resposta é:
{
"created_at": "2021-12-24T14:46:52",
"id": "f4e456d0-78f1-42ba-a3ee-af9440923074",
"name": "Frank"
}
GET /api/users
curl --request GET \
--url http://localhost:4000/api/users \
--header 'Content-Type: application/json'O código HTTP de retorno deve ser 200 e o corpo esperado na resposta é:
[
{
"created_at": "2021-12-24T14:44:38",
"id": "e4fd3017-33f8-43e7-98ed-2ed388dcfab0",
"name": "Frank"
}
]
POST /api/users/:user_id/transactions
curl --request POST \
--url http://localhost:4000/api/users/0d522e67-3239-4105-a534-df47ac541bf0/transactions \
--header 'Content-Type: application/json' \
--data '{
"transaction": {
"amount": 12,
"currency_from": "BRL",
"currency_to": "USD"
}
}'O código HTTP de retorno deve ser 201 e o corpo esperado na resposta é:
{
"amount": "12",
"amount_to": 2.1142,
"created_at": "2021-12-24T14:54:10",
"currency_from": "BRL",
"currency_to": "USD",
"id": "bde63d46-f074-4ad1-bba8-2afdc7c8f746",
"rate": "1.13208",
"user_id": "0d522e67-3239-4105-a534-df47ac541bf0"
}
GET /api/users/:user_id/transactions
curl --request GET \
--url http://localhost:4000/api/users/ab0f5215-42ca-45b2-a66d-2f8e44537a29/transactions \
--header 'Content-Type: application/json'O código HTTP de retorno deve ser 200 e o corpo esperado na resposta é:
[
{
"amount": "12",
"amount_to": null,
"created_at": "2021-12-24T14:59:11",
"currency_from": "BRL",
"currency_to": "USD",
"id": "d29fd494-35eb-42d1-b91b-85257ef2af86",
"rate": "1.13208",
"user_id": "ab0f5215-42ca-45b2-a66d-2f8e44537a29"
}
]Deploy
A aplicação está no Gigalixir no endereço https://jayacurrencyconverter.gigalixirapp.com. Um dos motivos de utilizar o serviçõ é que não tem sleeps da aplicação no plano free.
Licença
Copyright (c) 2021, Frank Ferreira.
JayaCurrencyConverter is MIT licensed