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!