Principal.java
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner lectura = new Scanner(System.in);
System.out.println("Escribe el número de la película de Star Wars que quieres consultar");
ConsultaPelicula consulta = new ConsultaPelicula();
try {
var numeroDePelicula = Integer.valueOf(lectura.nextLine());
Pelicula pelicula = consulta.buscaPelicula(numeroDePelicula);
System.out.println(pelicula);
GeneradorDeArchivo generador = new GeneradorDeArchivo();
generador.guardarJson(pelicula);
} catch (NumberFormatException e){
System.out.println("Número no econtrado " + e.getMessage());
} catch (RuntimeException | IOException e){
System.out.println(e.getMessage());
System.out.println("Finalizando la aplicación.");
}
}
}
GeneradorDeArchivo.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
public class GeneradorDeArchivo {
public void guardarJson(Pelicula pelicula) throws IOException {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
FileWriter escritura = new FileWriter(pelicula.title()+".json");
escritura.write(gson.toJson(pelicula));
escritura.close();
}
}
ConsultaPelicula.java
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 ConsultaPelicula {
public Pelicula buscaPelicula(int numeroDePelicula) {
URI direccion = URI.create("https://swapi.info/api/films/" + numeroDePelicula);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(direccion)
.build();
try {
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
return new Gson().fromJson(response.body(), Pelicula.class);
} catch (Exception e) {
throw new RuntimeException("No encontre esa película.");
}
}
}
Pelicula.java
public record Pelicula(String title,
int episode_id,
String opening_crawl,
String director,
String producer,
String realise_date) {
}