Pelicula.java (record)
package com.starwarsapi.modelos;
public record Pelicula(
String title,
int episode_id,
String opening_crawl,
String director,
String producer,
String release_date
) {}
ConsultaPelicula.java
package com.starwarsapi.servicios;
import com.google.gson.Gson;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.GsonBuilder;
import com.starwarsapi.modelos.Pelicula;
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) {
String direccion = "https://swapi.py4e.com/api/films/"
+ numeroDePelicula + "/";
try {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(direccion))
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.setPrettyPrinting()
.create();
return gson.fromJson(json, Pelicula.class);
} catch (Exception e) {
throw new RuntimeException("No encontré esa película");
}
}
}
GeneradorDeArchivo.java
package com.starwarsapi.utilidades;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.starwarsapi.modelos.Pelicula;
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();
}
}
Principal.java
package com.starwarsapi.principal;
import com.starwarsapi.modelos.Pelicula;
import com.starwarsapi.servicios.ConsultaPelicula;
import com.starwarsapi.utilidades.GeneradorDeArchivo;
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner lectura = new Scanner(System.in);
ConsultaPelicula consulta = new ConsultaPelicula();
GeneradorDeArchivo generador = new GeneradorDeArchivo();
System.out.println("Escriba el número de la película (1-6):");
try {
var numeroDePelicula = Integer.valueOf(lectura.nextLine());
Pelicula pelicula = consulta.buscaPelicula(numeroDePelicula);
System.out.println(pelicula);
generador.guardarJson(pelicula);
System.out.println("Archivo generado con éxito.");
System.out.println("Finalizando la aplicación.");
} catch (NumberFormatException e) {
System.out.println("Debe ingresar un número válido.");
} catch (RuntimeException | IOException e) {
System.out.println(e.getMessage());
System.out.println("Finalizando la aplicación.");
}
}
}