Esse foi um pouco mais difícil que os demais, eu tive que pesquisar um pouco para realizá-lo e também olhar a solução do professor, junto com os desafios antigos para a requisição: tentei deixar o desafio mais modulado, deixando o Main mais limpo, apenas com um única criação de objeto e chamada de método. Não sei se isso é uma boa pratica, se alguém puder me responder sobre, agradeço. Enfim, abaixo o código:
import br.com.desafio.projeto.classes.Github;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
Github github = new Github();
github.requisitarGithub();
}
}
package br.com.desafio.projeto.classes;
import br.com.desafio.projeto.excecoes.ErroConsultaGitHubException;
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 Github {
public String pedeUsuario(){
Scanner scanner = new Scanner(System.in);
System.out.println("Digite o nome do usuario que deseja: ");
String user = scanner.nextLine();
return user;
}
public void requisitarGithub () throws IOException, InterruptedException {
Github github = new Github();
String url = "https://api.github.com/users/"+pedeUsuario();
try {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "application/vnd.github.v3+json")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 404){
throw new ErroConsultaGitHubException("Erro: Usuario não encontrado.");
}
String json = response.body();
System.out.println(json);
} catch (ErroConsultaGitHubException e) {
System.out.println(e.getMessage());
}
}
}