Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Desafio resolvido

package desafio.apis;

public final class ApiKeyGerador {
    private static final String API_KEY_GOOGLE_BOOKS = "SUA_CHAVE_API";
    private static final String API_KEY_COINGECKO = "SUA_CHAVE_API";

    private ApiKeyGerador() {}

    public static String getApiKey(String nomeProvador, String busca){
        switch (nomeProvador){
            case "GoogleBooks":
                return "https://www.googleapis.com/books/v1/volumes?q="
                        + busca.replace(" ", "+")
                        + "&key="
                        + API_KEY_GOOGLE_BOOKS;
            case "CoinGecko":
                return "https://api.coingecko.com/api/v3/simple/price?vs_currencies=usd&ids="
                        + busca.replace(" ", "+")
                        + "&x-cg-demo-api-key="
                        + API_KEY_COINGECKO;
            case "TheMealDB":
                return "https://www.themealdb.com/api/json/v1/1/search.php?s="
                        + busca.replace(" ", "+");
            default:
                System.out.println("Provedor invalido");
                return null;
        }
    }
}
package desafio.apis;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public final class Consumidor {
    private Consumidor() {};

    public static String ConsumirApi(String endereco) throws IOException, InterruptedException {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(endereco))
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        return response.body();
    }
}
package desafio.apis;

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

public class Principal {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner sc = new Scanner(System.in);

        String menu  = """
                Informe abaixo em qual API deseja buscar:
                
                1- Consulta à API do Google Books
                2- Consulta à API CoinGecko
                3- Consulta à API do TheMealDB
                0- Sair
                """;

        int opcaoSelecionada = 1;
        while (opcaoSelecionada != 0) {
            System.out.println(menu);
            opcaoSelecionada = Integer.parseInt(sc.nextLine());

            switch (opcaoSelecionada) {
                case 0:
                    System.out.println("Saindo...");
                    break;
                case 1:
                    System.out.println("insira o título de um livro:");
                    String titulo = sc.nextLine();
                    String googleBooksEndereco = ApiKeyGerador.getApiKey("GoogleBooks", titulo);
                    if (googleBooksEndereco != null) {
                        String response = String.valueOf(Consumidor.ConsumirApi(googleBooksEndereco));
                        System.out.println(response);
                        break;
                    }
                case 2:
                    System.out.println("Insira nome da criptomoeda para a cotação (por exemplo, bitcoin, litecoin): ");
                    String crypto = sc.nextLine();
                    String coinGeckoEndereco = ApiKeyGerador.getApiKey("CoinGecko", crypto);
                    if (coinGeckoEndereco != null) {
                        String response = String.valueOf(Consumidor.ConsumirApi(coinGeckoEndereco));
                        System.out.println(response);
                        break;
                    }
                case 3:
                    System.out.println("Insira o nome de uma receita");
                    String receita = sc.nextLine();
                    String theMealDBEndereco = ApiKeyGerador.getApiKey("TheMealDB", receita);
                    if (theMealDBEndereco != null) {
                        String response = String.valueOf(Consumidor.ConsumirApi(theMealDBEndereco));
                        System.out.println(response);
                        break;
                    }
                default:
                    System.out.println("Opção Invalida");
                    break;
            }
        }
        sc.close();

    }
}
2 respostas

Olá, Aldeny!

Meus parabéns pela apresentação da sua resolução da atividade. O seu código ficou excelente! Achei muito bacana como você estruturou o projeto, separando a lógica de geração de chaves na classe ApiKeyGerador e o consumo das requisições na classe Consumidor.

Bons estudos!

Sucesso

Imagem da comunidade
solução!

Olá Victor,
Obrigado pela sua avaliação, tenho me sintido cada vez mais motivado quando um desafio resolvido é avaliado por vcs.

Gratidão!