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!");
}
}
}