implement MovieService.java

This commit is contained in:
2026-04-30 12:44:48 +03:30
parent f1fdec02e5
commit fa484e4275
+32 -68
View File
@@ -87,21 +87,7 @@ public class MovieService {
}
}
/**
* TODO 1: Display movies for a specific genre and page
*
* Open this link in your browser (and check Pretty-print checkbox) to view json format:
* https://api.meshcomp.ir/api/v1/genres/1/movies
*
* Steps:
* - Call getMoviesByGenreList(genreId, page) to get JSON
* - Parse JSON to JsonObject
* - Get "movies" array (NOT "data")
* - Loop through array and print: "ID: {id} | {title} ({year})"
* - Also print total and total_pages
*
* PUT ALL PARSING CODE INSIDE try-catch
*/
public void displayMoviesByGenre(Long genreId, Long page) {
String jsonResponse = getMoviesByGenreList(genreId, page);
@@ -138,77 +124,55 @@ 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) {
try {
// TODO: Complete this method
// String url = MOVIE_BY_ID_URL + movieId;
// HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).build();
// HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// if (response.statusCode() == 200) return response.body();
return null;
String url = MOVIE_BY_ID_URL + movieId;
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
return response.body();
} else {
System.out.println("HTTP error code: " + response.statusCode());
return null;
}
} catch (Exception e) {
System.out.println("!!Exception : " + e.getMessage());
}
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) {
// Step 1: Get JSON response from API
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) {
System.out.println("Failed to get movie details for ID: " + movieId);
return;
}
try {
// TODO: Parse jsonResponse to JsonObject
// HINT: Use JsonParser.parseString(jsonResponse).getAsJsonObject()
// TODO: use Gson to parse the json
// Your code here:
JsonObject jsonObject = JsonParser.parseString(jsonResponse).getAsJsonObject();
Gson gson = new Gson();
Movie movie = gson.fromJson(jsonObject, Movie.class);
System.out.println("=======================================================================\n" +
movie.getTitle() + " (" + movie.getYear() + ")" +
"\n=======================================================================");
System.out.println("Rating: " + movie.getImdb_rating() + " | votes: " + movie.getImdb_votes() +
"\nDirector: " + movie.getDirector() +
"\nWriter(s): " + movie.getWriter() +
"\nCast: " + movie.getActors() +
"\nGenre: " + movie.getGenres() +
"\nRuntime: " + movie.getRuntime() + " | Rated: " + movie.getRated() +
"\nCountry: " + movie.getCountry() + " | Released: " + movie.getReleased() +
"\nplot: " + movie.getPlot() +
"\nAwards: " + movie.getAwards() +
"\n=======================================================================");
} catch (Exception e) {
System.err.println("ERROR parsing movie details: " + e.getMessage());
}