Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Desafío: construyendo una nueva aplicación

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.");
        }
    }
}