public class Main {
public static void main(String[] args) throws IOException {
Scanner lectura = new Scanner(System.in);
List<Film> peliculas = new LinkedList<>();
ConsultaClientHTTP c = new ConsultaClientHTTP();
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.setPrettyPrinting()
.create();
System.out.println("****Bienvenido a su sistema SWAPI****");
while (true) {
System.out.println("Seleccione el número de la película que desea consultar ");
System.out.println("1,2,3,4,5,6,7 y 8 para salir");
try {
int busqueda = lectura.nextInt();
if (busqueda == 8) {
break;
}
if (busqueda < 1 || busqueda > 7) {
System.out.println("Ingrese una opción correcta");
} else {
FilmsOmdb filmsOmdb = c.solicitudHttp(busqueda);
System.out.println(filmsOmdb);
Film myFilm = new Film(filmsOmdb);
System.out.println("Título ya convertido: " + myFilm);
peliculas.add(myFilm);
}
} catch (Exception e) {
System.out.println("Error dato desconocido-> "+ e.getMessage());
lectura.nextLine(); // Limpiar el buffer en caso de error
}
}
lectura.close(); // <- Cerramos el Scanner fuera del ciclo
FileWriter escritura = new FileWriter(peliculas.getFirst().getTitle()+".json");
escritura.write(gson.toJson(peliculas));
escritura.close();
System.out.println("Finaliza ejecución del programa");
}
}
public class ConsultaClientHTTP {
//link dinamico
public ConsultaClientHTTP() {
}
public FilmsOmdb solicitudHttp(int id) {
String id1 = String.valueOf(id);
String direccion = "https://swapi.py4e.com/api/films/" + id1 + "/";
try {
// Crear un cliente HTTP
HttpClient client = HttpClient.newHttpClient();
// Construir la solicitud HTTP
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(direccion)) // Establecer la URI de la solicitud
.build();
// Enviar solicitud y recibir la respuesta
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// Imprimir el cuerpo de respuesta
System.out.println(response.body());
return new Gson().fromJson(response.body(),FilmsOmdb.class);
} catch (IOException | InterruptedException e) {
System.out.println("Error en la consulta cliente servidor");
System.out.println(e.getMessage());
return null; // Retornar null en caso de error
}
}
}
public record FilmsOmdb(String title, Integer episode_id, String opening_crawl, String release_date) {
}
public class Film {
private String title;
private String episode_id;
private String opening_crawl;
private String realease_date;
public Film() {
}
public Film(FilmsOmdb myFlim) {
this.title = myFlim.title();
this.episode_id = String.valueOf(myFlim.episode_id());
this.opening_crawl = myFlim.opening_crawl();
this.realease_date = String.valueOf(myFlim.release_date());
}