package br.com.alura.buscador.modelo;
import com.google.gson.Gson;
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) {
try {
URI url = URI.create("https://viacep.com.br/ws/" + cep + "/json/");
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(url)
.build();
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
return new Gson().fromJson(response.body(), Endereco.class);
}catch (Exception e){
throw new RuntimeException("Não consegui obter o endereço a partir desse CEP.");
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------
package br.com.alura.buscador.modelo;
public record Endereco(String cep,
String logradouro,
String bairro,
String localidade,
String uf,
String estado,
String regiao) {
}
-----------------------------------------------------------------------------------------------------------------------------------------
package br.com.alura.buscador.modelo;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
public class GeradorDeArquivo {
public void geraArquivo(Endereco endereco) {
try {
FileWriter escrita = new FileWriter(endereco.cep() + ".json");
Gson json = new GsonBuilder().setPrettyPrinting().create();
escrita.write(json.toJson(endereco));
escrita.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------
package br.com.alura.buscador.principal;
import br.com.alura.buscador.modelo.ConsultaCep;
import br.com.alura.buscador.modelo.Endereco;
import br.com.alura.buscador.modelo.GeradorDeArquivo;
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args){
Scanner leitura = new Scanner(System.in);
System.out.println("Informe um cep para busca:");
String cep = leitura.nextLine();
try {
ConsultaCep consultaCep = new ConsultaCep();
Endereco endereco = consultaCep.buscaEndereco(cep);
GeradorDeArquivo geradorDeArquivo = new GeradorDeArquivo();
geradorDeArquivo.geraArquivo(endereco);
}catch (RuntimeException e){
System.out.println(e.getMessage());
}finally {
System.out.println("Finalizando a aplicação");
}
}
}