+
+@code {
+ [Parameter]
+ public string id { get; set; }
+}
diff --git a/Components/Routes.razor b/Components/Routes.razor
index 105855d..43d695d 100644
--- a/Components/Routes.razor
+++ b/Components/Routes.razor
@@ -1,4 +1,5 @@
-
+@rendermode InteractiveServer
+
diff --git a/Services/OmdbService.cs b/Services/OmdbService.cs
index 0945c02..1b0d66b 100644
--- a/Services/OmdbService.cs
+++ b/Services/OmdbService.cs
@@ -8,6 +8,7 @@ using System.Text.Json;
class OmdbService
{
private readonly string url;
+ private readonly HttpClient httpClient = new();
public OmdbService()
{
@@ -24,13 +25,9 @@ class OmdbService
///
/// ID IMDB del film da cercare.
/// Un oggetto Movie con i dettagli del film.
- public async Task FetchMovieDetail(string id)
+ public async Task FetchMovieDetail(string id)
{
- var requestUrl = url + "&i=" + WebUtility.UrlEncode(id);
- using var httpClient = new HttpClient();
-
- var response = await httpClient.GetStringAsync(requestUrl);
- return JsonSerializer.Deserialize(response)!;
+ return await FetchAsync("i", id);
}
@@ -39,12 +36,26 @@ class OmdbService
///
/// Titolo dei film da cercare.
/// >Una lista di oggetti Movie che corrispondono alla ricerca.
- public async Task FetchMovies(string searchTitle)
+ public async Task FetchMovies(string searchTitle)
{
- var requestUrl = url + "&s=" + WebUtility.UrlEncode(searchTitle);
- using var httpClient = new HttpClient();
+ return await FetchAsync("s", searchTitle);
+ }
+ ///
+ /// Esegue una richiesta HTTP GET e deserializza la risposta JSON in un oggetto del tipo specificato.
+ ///
+ /// Tipo dell'oggetto di ritorno.
+ /// Parametro della query HTTP.
+ /// Valore del parametro della query HTTP.
+ /// Un oggetto del tipo specificato deserializzato dalla risposta JSON.
+ private async Task FetchAsync(string query, string value)
+ {
+ var requestUrl = url + "&" + query + "=" + WebUtility.UrlEncode(value);
var response = await httpClient.GetStringAsync(requestUrl);
- return JsonSerializer.Deserialize(response)!;
+ try {
+ return JsonSerializer.Deserialize(response)!;
+ } catch (JsonException) {
+ return default;
+ }
}
}
\ No newline at end of file