JayaCurrencyConverter View Source

JayaCurrencyConverter

CI CD Coverage Status hexdocs.pm

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 .env

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
Metodoendpointdescriçãovalores que podem ser passados para os parametros
GET/exibe o texto #JayaCurrencyConverter
GET/api/userslita todos usuarios
GET/api/users/:idlista um usuario específicoid
POST/api/usersesse endpoint cria um usuarioname
GET/api/users/:user_id/transactionslista todas transações de um usuáriouser_id
GET/api/users/:user_id/transactions/:idlista uma transação específica de um usuáriouser_id, id
POST/api/users/:user_id/transactionscria uma transaçãouser_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.server

Abaixo, 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