package exercicios.desafioBuscador;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class TesteEndereco {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ConsultaCep consultaCep = new ConsultaCep();
GeradorDeArquivo geradorDeArquivo = new GeradorDeArquivo();
List<Endereco> listaDeEndereco = new ArrayList<>();
int opcao = 0;
do {
System.out.println("\nMenu:");
System.out.println("1. Buscar CEP");
System.out.println("2. Sair");
System.out.print("Escolha uma opção: ");
opcao = scanner.nextInt();
scanner.nextLine(); // Consumir a quebra de linha após o nextInt()
switch (opcao) {
case 1:
System.out.println("Digite o CEP que deseja buscar: ");
String cepStr = scanner.nextLine();
try {
Endereco novoEndereco = consultaCep.buscaEndereco(cepStr);
System.out.println(novoEndereco);
listaDeEndereco.add(novoEndereco);
geradorDeArquivo.salvaEndereco(listaDeEndereco);
} catch (RuntimeException e) {
System.out.println(e.getMessage());
System.out.println("Finalizando a aplicação");
}
break;
case 2:
System.out.println("Saindo...");
break;
default:
System.out.println("Opção inválida. Tente novamente.");
}
} while (opcao != 2);
scanner.close();
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
package exercicios.desafioBuscador;
import com.google.gson.Gson;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ConsultaCep {
public Endereco buscaEndereco(String cep) {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://viacep.com.br/ws/" + cep + "/json/"))
.build();
try {
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
return new Gson().fromJson(response.body(), Endereco.class);
} catch (IOException e) {
System.out.println("Erro de E/S: " + e.getMessage());
throw new RuntimeException("Erro de E/S ao buscar o endereço: " + e.getMessage());
} catch (InterruptedException e) {
System.out.println("Erro de interrupção: " + e.getMessage());
throw new RuntimeException("Erro de interrupção ao buscar o endereço: " + e.getMessage());
} catch (Exception e) {
System.out.println("Erro desconhecido: " + e.getMessage());
throw new RuntimeException("Erro desconhecido ao buscar o endereço: " + e.getMessage());
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package exercicios.desafioBuscador;
public record Endereco(
String cep ,
String logradouro,
String bairro,
String localidade,
String uf
) {}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package exercicios.desafioBuscador;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
public class GeradorDeArquivo {
public void salvaEndereco(List<Endereco> listaDeEndereco) {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
try (FileWriter fileWriter = new FileWriter("listaDeEndereço.json")) {
fileWriter.write(gson.toJson(listaDeEndereco));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}