From 2751b4181dc5fe4a39637a6e1338343e58ce5fdb Mon Sep 17 00:00:00 2001 From: Berack96 Date: Mon, 19 Jan 2026 20:22:55 +0100 Subject: [PATCH] models Movie, MovieSearch --- Components/Pages/Favorites.razor | 4 +--- Models/Movie.cs | 20 +++++++++++++++++++ Models/MovieSearch.cs | 15 ++++++++++++++ Services/OmdbService.cs | 34 ++++++++++++++++++++++---------- 4 files changed, 60 insertions(+), 13 deletions(-) create mode 100644 Models/Movie.cs create mode 100644 Models/MovieSearch.cs diff --git a/Components/Pages/Favorites.razor b/Components/Pages/Favorites.razor index 932fd64..a144f9f 100644 --- a/Components/Pages/Favorites.razor +++ b/Components/Pages/Favorites.razor @@ -13,10 +13,8 @@ @code { private async Task FaiCose() { - await JSRuntime.InvokeVoidAsync("console.log", "Cose fatte!"); - var movies = await OmdbService.FetchMovies("Matrix"); - var movieDetail = await OmdbService.FetchMovieDetail("tt28228084"); + var movieDetail = await OmdbService.FetchMovieDetail("tt11749868"); await JSRuntime.InvokeVoidAsync("console.log", movies); await JSRuntime.InvokeVoidAsync("console.log", movieDetail); diff --git a/Models/Movie.cs b/Models/Movie.cs new file mode 100644 index 0000000..e59d11b --- /dev/null +++ b/Models/Movie.cs @@ -0,0 +1,20 @@ + + +using System.Text.Json.Serialization; + + +/// +/// Rappresenta un film con le sue proprietà principali. +/// Non ho preso tutte le proprietà disponibili dall'API OMDB, solo quelle richieste. +/// +class Movie +{ + public required string Title { get; set; } + public required string Year { get; set; } + [JsonPropertyName("imdbID")] + public required string IdIMDB { get; set; } + public required string Poster { get; set; } + public string Runtime { get; set; } = "N/A"; + public string Plot { get; set; } = "N/A"; + +} \ No newline at end of file diff --git a/Models/MovieSearch.cs b/Models/MovieSearch.cs new file mode 100644 index 0000000..d1a7f83 --- /dev/null +++ b/Models/MovieSearch.cs @@ -0,0 +1,15 @@ + + +using System.Text.Json.Serialization; + + +/// +/// Modello per rappresentare i risultati di una ricerca di film. +/// Ha solo scopo di deserializzazione della risposta JSON dell'API OMDB. +/// +class MovieSearch +{ + public required Movie[] Search { get; set; } + [JsonPropertyName("totalResults")] + public required string TotalResults { get; set; } +} \ No newline at end of file diff --git a/Services/OmdbService.cs b/Services/OmdbService.cs index 08a21c4..0945c02 100644 --- a/Services/OmdbService.cs +++ b/Services/OmdbService.cs @@ -1,7 +1,10 @@ +using System.Net; +using System.Text.Json; - -using System.Reflection.Metadata; - +/// +/// Servizio per interagire con l'API OMDB. +/// Semplifica le richieste per ottenere dettagli sui film. +/// class OmdbService { private readonly string url; @@ -9,28 +12,39 @@ class OmdbService public OmdbService() { var apiKey = File.ReadAllText("APIKey.txt").Trim(); - apiKey = System.Net.WebUtility.UrlEncode(apiKey); + apiKey = WebUtility.UrlEncode(apiKey); url = "http://www.omdbapi.com/?apikey=" + apiKey + "&type=movie" + "&r=json"; } - public async Task FetchMovieDetail(string id) + /// + /// Recupera i dettagli di un film dato il suo ID IMDB. + /// + /// ID IMDB del film da cercare. + /// Un oggetto Movie con i dettagli del film. + public async Task FetchMovieDetail(string id) { - var requestUrl = url + "i=" + System.Net.WebUtility.UrlEncode(id); + var requestUrl = url + "&i=" + WebUtility.UrlEncode(id); using var httpClient = new HttpClient(); var response = await httpClient.GetStringAsync(requestUrl); - return response.ToString(); + return JsonSerializer.Deserialize(response)!; } - public async Task FetchMovies(string searchTitle) + + /// + /// Recupera una lista di film che corrispondono al titolo di ricerca. + /// + /// Titolo dei film da cercare. + /// >Una lista di oggetti Movie che corrispondono alla ricerca. + public async Task FetchMovies(string searchTitle) { - var requestUrl = url + "&t=" + System.Net.WebUtility.UrlEncode(searchTitle); + var requestUrl = url + "&s=" + WebUtility.UrlEncode(searchTitle); using var httpClient = new HttpClient(); var response = await httpClient.GetStringAsync(requestUrl); - return response.ToString(); + return JsonSerializer.Deserialize(response)!; } } \ No newline at end of file