implement getMovieById

This commit is contained in:
2026-04-30 17:11:57 +03:30
parent e0e20cf256
commit 369db0194c
2 changed files with 29 additions and 56 deletions
+2 -2
View File
@@ -29,9 +29,9 @@ public class Main {
case 3: case 3:
// TODO (BONUS): Get movie ID from user, then call movieService.displayMovieDetails() Long movieId = getLongInput("Please set the movie id: ");
movieService.displayMovieDetails(movieId);
break; break;
case 0: case 0:
+27 -54
View File
@@ -1,5 +1,7 @@
package movie.apis; package movie.apis;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.*; import com.google.gson.*;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
@@ -112,18 +114,13 @@ public class MovieService {
} }
} }
/**
* BONUS: Fetch movie details from API using movie ID
* URL format: https://api.meshcomp.ir/api/v1/movies/{movieId}
*/
private String getMovieById(Long movieId) { private String getMovieById(Long movieId) {
try { try {
// TODO: Complete this method String url = MOVIE_BY_ID_URL + movieId;
// String url = MOVIE_BY_ID_URL + movieId; HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).build();
// HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// if (response.statusCode() == 200) return response.body(); if (response.statusCode() == 200) return response.body();
return null; return null;
} catch (Exception e) { } catch (Exception e) {
@@ -132,58 +129,34 @@ public class MovieService {
return null; return null;
} }
/*
BONUS TODO: Display complete movie details for a given movie ID
Open this link in your browser (and check Pretty-print checkbox) to view json format:
https://api.meshcomp.ir/api/v1/movies/1
INSTRUCTIONS:
1. Call getMovieById(movieId) to get the JSON response string
2. Check if response is null (if yes, print error and return)
3. Parse the JSON string to JsonObject (inside try-catch)
4. Use Gson to extract all fields from the JSON and map them to your Movie class:
- Add missing JSON fields to your Movie class first (actors, awards, director,
imdb_id, imdb_votes, metascore, plot, rated, released, runtime, type, writer)
- Then use Gson to parse your json string
5. Print all movie details in a readable format
(PUT ALL PARSING CODE INSIDE THE EXISTING try-catch)
*/
/* EXAMPLE OUTPUT:
=======================================================================
THE SHAWSHANK REDEMPTION (1994)
=======================================================================
Rating: 9.3/10 | Votes: 1,738,596
Director: Frank Darabont
Cast: Tim Robbins, Morgan Freeman, Bob Gunton, William Sadler
Genre: Crime, Drama
Runtime: 142 min | Rated: R
Country: USA | Released: 14 Oct 1994
Plot: Two imprisoned men bond over a number of years, finding
solace and eventual redemption through acts of common decency.
Awards: Nominated for 7 Oscars. Another 19 wins & 30 nominations.
=======================================================================
*/
public void displayMovieDetails(Long movieId) { public void displayMovieDetails(Long movieId) {
// Step 1: Get JSON response from API
String jsonResponse = getMovieById(movieId); String jsonResponse = getMovieById(movieId);
// Step 2: Check if we got valid data
// Step 3-5: Parse JSON and display details (PUT YOUR CODE INSIDE try-catch)
if (jsonResponse == null) { if (jsonResponse == null) {
System.out.println("Failed to get movie details for ID: " + movieId); System.out.println("Failed to get movie details for ID: " + movieId);
return; return;
} }
try { try {
// TODO: Parse jsonResponse to JsonObject JsonObject jsonObject = JsonParser.parseString(jsonResponse).getAsJsonObject();
// HINT: Use JsonParser.parseString(jsonResponse).getAsJsonObject()
// TODO: use Gson to parse the json Gson gson = new Gson();
// Your code here: Movie movie = gson.fromJson(jsonObject, Movie.class);
System.out.println("=======================================================================");
System.out.println(movie.getTitle() + " ( " + movie.getYear() + ")");
System.out.println("=======================================================================");
System.out.println("Rating: " + movie.getImdb_rating() + "/10 | Votes: " + movie.getImdb_votes());
System.out.println("Director: " + movie.getDirector());
System.out.println("Cast: " + movie.getActors());
System.out.println("Genre: " + movie.getGenres());
System.out.println("Runtime: " + movie.getRuntime() + " min | Rated: " + movie.getRated());
System.out.println("Country: " + movie.getCountry() + " | Released: " + movie.getReleased());
System.out.println("plot: " + movie.getPlot());
System.out.println("Awards: " + movie.getAwards());
System.out.println("=======================================================================");
} catch (Exception e) { } catch (Exception e) {
System.err.println("ERROR parsing movie details: " + e.getMessage()); System.err.println("ERROR parsing movie details: " + e.getMessage());
} }