0
respostas

Resolução do desafio Github API

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());
        }
    }
}