1
resposta

[Projeto] Desfio ConsultaGitHub


public class Usuario {
    private String nomeUsuario;
    private  int id;

    public Usuario(UsuarioGitHub usuarioGitHub) {
        this.nomeUsuario = usuarioGitHub.login(); // Não necessita converter, pois, é um texto
        this.id = Integer.valueOf(usuarioGitHub.id()); // Converter do tipo String para o tipo Inteiro
    }

    @Override
    public String toString() {
        return "Nome: " + nomeUsuario + "\nid: " + id;
    }
}
// Receber os dados no formato json
public record UsuarioGitHub(String login, int id) {
}

import br.meusite.com.desafiosAula3.Excecao.ErroConsultaGitHubException;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

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.sql.SQLOutput;
import java.util.Scanner;

public class ConsultaGitHub {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);

        System.out.println("Informe um nome para busca");
        var nomeBusca = leitura.next();

        var enderecoDeBusca = "https://api.github.com/users/" + nomeBusca;

        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create(enderecoDeBusca))
                    .header("Accept", "application/vnd.github.v3+json")
                    .build();

            HttpResponse<String> response = client
                    .send(request, HttpResponse.BodyHandlers.ofString());
            if (response.statusCode() == 404) {
                throw new ErroConsultaGitHubException("Usuário não encontrado no GitHub");
            }

            String json = response.body();

            Gson gson = new GsonBuilder().create();
            UsuarioGitHub usuarioGitHub = gson.fromJson(json, UsuarioGitHub.class);
            Usuario usuario = new Usuario(usuarioGitHub);
            System.out.println("Usuário: " + usuario);

        } catch (IOException | InterruptedException e){
            System.out.println("Probelma: houve um erro na tentativa de consulta à API do GitHub.");
            e.printStackTrace();
        } catch (ErroConsultaGitHubException e) {
            System.out.println(e. getMessage());
        } finally {
            System.out.println("Consulta finalizada!");
        }

    }
}
1 resposta

Olá, Everaldo! Tudo bem?

Ótimo trabalho ao implementar a lógica de busca de usuários do GitHub e tratamento de exceções! Se você estiver enfrentando algum problema específico ou tiver alguma dúvida mais direcionada sobre uma parte do código, fique à vontade para compartilhar, ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!