Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/luizfjp/currency-coin-grpc-go

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/luizfjp/currency-coin-grpc-go

  • v0.0.0-20220427041154-b4a2c1d3d1c0
  • Source
  • Go
  • Socket score

Version published
Created
Source

Klever API Challenge

Seja bem-vindo(a)!

Olá, este repositório foi feito baseado no desafio proposto pela Klever.

Descrição e requisitos do projeto:

The Technical Challenge consists of creating an API with Golang using gRPC with stream pipes that exposes an upvote service endpoints.

Technical requirements:

  • Keep the code in Github

API:

  • The API must guarantee the typing of user inputs. If an input is expected as a string, it can only be received as a string.
  • The structs used with your mongo model should support Marshal/Unmarshal with bson, json and struct
  • The API should contain unit test of methods it uses

Extra:

  • Deliver the whole solution running in some free cloud service

Utilizando a aplicação

Clone o Repositório

  • Faça o clone do repositório na sua máquina por meio da chave SSH, basta rodar o comando:
git clone git@github.com:LuizFJP/KLEVER-CHALLENGE-currency-coin.git

Instalação do Insomnia

  • O que é? Uma ferramenta cliente de API REST, como o Postman, mas tem alguns recursos adicionais, como suporte a GraphQL, gRPC, entre outros.

  • Por quê? Para ter acesso ao server da aplicação, faz-se necessário a utilização de um client como meio de envio das requisições.

    Site oficial para a instalação


Setup e server

Rode em sequência os comandos:

Para instalar as bibliotecas necessárias da aplicação, rode na raiz do projeto o comando: make mod

Para "buildar" o servidor, rode na raiz do projeto o comando: make build

Para inicializar o servidor, rode na raiz do projeto o comando: make server

Perfeito!!! Seu servidor já está pronto. É esperada a seguinte mensagem:

Currency Coin Service Started
2022/04/26 05:20:11 Listening on 0.0.0.0:50051
Starting Server...

Testes

Para checar se a aplicação está funcionando devidamente, rode na raiz do projeto o comando: make test


Setup do Insomnia

Abra o Insomnia e clique no botão Create e logo em seguida no botão Request Collection


step-one

Defina o nome de preferência ou deixe como padrão. Logo em seguida, clique Create.


step-one

Aperte no botão + e depois em New Request


step-one

Defina o nome de preferência ou deixe como padrão. Logo em seguida, clique em GET e selecione gRPC.


step-one

Clique no botão Add Proto File e selecione o arquivo service.proto, localizado em ./proto referente a raiz onde o projeto foi clonado.


step-one

No local indicado na seta 1, insira o valor localhost:50051, fazendo isso o client do Insomnia conseguirá se conectar com o nosso server. Por fim, selecione um dos métodos da aplicação gRPC e estará pronto para uso.


step-one


Sobre os métodos

  • /CurrencyCoinService/createCoin

Responsável pela criação de uma moeda. Envia uma requisição com nome e preço. O retorno deve ser o nome, preço e a quantidade de votos (não informado pelo usuário, moedas criadas recebem o valor 0 aos votos automaticamente).

Exemplo de requisição:

{
	"name": "BITCOIN",
	"price": 5.467
}

Exemplo de response:

{
	"name": "BITCOIN",
	"price": 5.467,
  "vote": 0
}
  • /CurrencyCoinService/ListCoins

Responsável pelo retorno de todas as moedas. Envia uma requisição vazia e será retornado todas as moedas.

Exemplo de requisição:

{}

Exemplo de response:

{
	"name": "BITCOIN",
	"price": 5.467,
  "vote": 0
}

Exemplo de response:

{
	"name": "Ethereum",
	"price": 942.78,
  "vote": 91
}

Exemplo de response:

{
	"name": "Shiba",
	"price": 00000.1,
  "vote": 4984
}
  • /CurrencyCoinService/UpvoteCoin

Responsável por aumentar o número de votos em 1. O corpo da requisição deve ser o nome da moeda e o retorno será o nome, preço e voto atualizado. ATENÇÃO: A API diferencia letras maiúsculas e minúsculas, por isso é importante inserir o nome da mesma forma como está cadastrado

Exemplo de requisição:

{"name":"BITCOIN"}

Exemplo de response:

{
	"name": "BITCOIN",
	"price": 5.467,
  "vote": "1"
}
  • /CurrencyCoinService/DownvoteCoin

Responsável por decrementar o número de votos em 1. O corpo da requisição deve ser o nome da moeda e o retorno será o nome, preço e voto atualizado. ATENÇÃO: A API diferencia letras maiúsculas e minúsculas, por isso é importante inserir o nome da mesma forma como está cadastrado

Exemplo de requisição:

{"name":"BITCOIN"}

Exemplo de response:

{
	"name": "BITCOIN",
	"price": 5.467,
  "vote": 0
}
  • /CurrencyCoinService/Delete

Responsável por deletar uma moeda. O corpo da requisição deve ser o nome da moeda e o retorno será uma mensagem confirmando a deleção. ATENÇÃO: A API diferencia letras maiúsculas e minúsculas, por isso é importante inserir o nome da mesma forma como está cadastrado

Exemplo de requisição:

{"name":"BITCOIN"}

Exemplo de response:

{
	"message": "BITCOIN was deleted successful!
}

Fontes de estudo:

Documentação do mongoDB
Documentação do gRPC
Documentação do GO
Documentação do mongodb driver
Indispensável mencionar o uso de diversos tutoriais no Youtube, StackOverFLow, GitHub e o Médium.


Sugestões e feedbacks serão sempre bem-vindos :)

FAQs

Package last updated on 27 Apr 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc