1
resposta

[Sugestão] Coin Gecko API

Olá, tudo bem?

Segue sugestão de solução para o desafio 2 Coin Gecko API:

Explicando como funciona primeiro ao executar: 1 - O usuário deve digitar um nome de criptomoeda 2 - É devolvido uma lista de criptomoedas que contém no nome a frase enviada pelo usuário anteriormente, contendo o nome e id de cada criptomoeda 3 - O usuário visualizando a lista de criptomoedas deve digitar um id de criptomoeda da lista ou qualquer outra que ele quiser para tentar para visualizar a cotação da criptomoeda. 4 - Depois de enviar o id da criptomoeda é devolvida a cotação do id de criptomoeda especifico em json, contendo o id e a cotação em USD

App.java

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;

import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class App {
    public static void main(String[] args) throws Exception {
        Scanner leitura = new Scanner(System.in);
        
        System.out.println("Digite uma criptomoeda:");
        var busca = leitura.nextLine().toLowerCase(); // Converter para minúsculas para comparar sem distinção de maiúsculas/minúsculas
        
        String endereco = "https://api.coingecko.com/api/v3/coins/list";
    
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder().uri(URI.create(endereco)).build();
        HttpResponse<String> response;

        response = client.send(request, HttpResponse.BodyHandlers.ofString());
        
        // Verificando se a solicitação foi bem-sucedida (status code 200)
        if (response.statusCode() == 200) {
            // Criando o objeto Gson
            Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
            
            // Convertendo a resposta para um array de objetos Coin
            Coin[] coins = gson.fromJson(response.body(), Coin[].class);
            
            // Iterando sobre o array de moedas para encontrar as que contêm "bit" no nome
            for (Coin coin : coins) {
                String name = coin.getName().toLowerCase(); // Convertendo para minúsculas para comparar
                if (name.contains(busca)) {
                    // Se o nome contém a string buscada, imprime o nome e o símbolo
                    System.out.println("Name: " + coin.getName() + ", ID: " + coin.getId());
                }
            }
        } else {
            System.out.println("Falha na solicitação: " + response.statusCode());
        }

        Scanner leitura2 = new Scanner(System.in);
        System.out.println("Digite o nome da receita para a busca: ");
        var criptoNome = leitura2.nextLine();

        String endereco2 = "https://api.coingecko.com/api/v3/simple/price?ids=" + criptoNome + "&vs_currencies=usd";

        HttpClient client2 = HttpClient.newHttpClient();
        HttpRequest request2 = HttpRequest.newBuilder().uri(URI.create(endereco2)).build();
        HttpResponse<String> response2 = client2.send(request2, HttpResponse.BodyHandlers.ofString());

        System.out.println(response2.body());
    }
}

Coin.java

class Coin {
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }


}

Aceito sugestões para melhorias!

1 resposta

Oii Roberto, tudo bem?

Muito obrigada por compartilhar sua solução! Sua explicação detalhada e o código bem estruturado tornam mais fácil para os outros entenderem como utilizar essa API para obter informações sobre criptomoedas.

A utilização da biblioteca Gson para fazer o parsing do JSON de resposta da API é uma escolha sólida, e a forma como você itera sobre as moedas para encontrar aquelas que correspondem à busca do usuário demonstra um bom entendimento da lógica de programação.

E, a divisão do código em classes separadas, como a classe Coin para representar as moedas, é uma prática recomendada de organização do código.

Continue compartilhando seu conhecimento e contribuindo para a comunidade!

Um abraço e bons estudos.