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