implement MovieService.java
This commit is contained in:
@@ -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) {
|
public void displayMoviesByGenre(Long genreId, Long page) {
|
||||||
|
|
||||||
String jsonResponse = getMoviesByGenreList(genreId, 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) {
|
private String getMovieById(Long movieId) {
|
||||||
try {
|
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) {
|
} catch (Exception e) {
|
||||||
System.out.println("!!Exception : " + e.getMessage());
|
System.out.println("!!Exception : " + e.getMessage());
|
||||||
}
|
}
|
||||||
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
|
|
||||||
// HINT: Use JsonParser.parseString(jsonResponse).getAsJsonObject()
|
JsonObject jsonObject = JsonParser.parseString(jsonResponse).getAsJsonObject();
|
||||||
// TODO: use Gson to parse the json
|
|
||||||
// Your code here:
|
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) {
|
} catch (Exception e) {
|
||||||
System.err.println("ERROR parsing movie details: " + e.getMessage());
|
System.err.println("ERROR parsing movie details: " + e.getMessage());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user