models Movie, MovieSearch
This commit is contained in:
@@ -13,10 +13,8 @@
|
|||||||
@code {
|
@code {
|
||||||
private async Task FaiCose()
|
private async Task FaiCose()
|
||||||
{
|
{
|
||||||
await JSRuntime.InvokeVoidAsync("console.log", "Cose fatte!");
|
|
||||||
|
|
||||||
var movies = await OmdbService.FetchMovies("Matrix");
|
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", movies);
|
||||||
await JSRuntime.InvokeVoidAsync("console.log", movieDetail);
|
await JSRuntime.InvokeVoidAsync("console.log", movieDetail);
|
||||||
|
|||||||
20
Models/Movie.cs
Normal file
20
Models/Movie.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rappresenta un film con le sue proprietà principali.
|
||||||
|
/// Non ho preso tutte le proprietà disponibili dall'API OMDB, solo quelle richieste.
|
||||||
|
/// </summary>
|
||||||
|
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";
|
||||||
|
|
||||||
|
}
|
||||||
15
Models/MovieSearch.cs
Normal file
15
Models/MovieSearch.cs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Modello per rappresentare i risultati di una ricerca di film.
|
||||||
|
/// Ha solo scopo di deserializzazione della risposta JSON dell'API OMDB.
|
||||||
|
/// </summary>
|
||||||
|
class MovieSearch
|
||||||
|
{
|
||||||
|
public required Movie[] Search { get; set; }
|
||||||
|
[JsonPropertyName("totalResults")]
|
||||||
|
public required string TotalResults { get; set; }
|
||||||
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
|
using System.Net;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
using System.Reflection.Metadata;
|
/// Servizio per interagire con l'API OMDB.
|
||||||
|
/// Semplifica le richieste per ottenere dettagli sui film.
|
||||||
|
/// </summary>
|
||||||
class OmdbService
|
class OmdbService
|
||||||
{
|
{
|
||||||
private readonly string url;
|
private readonly string url;
|
||||||
@@ -9,28 +12,39 @@ class OmdbService
|
|||||||
public OmdbService()
|
public OmdbService()
|
||||||
{
|
{
|
||||||
var apiKey = File.ReadAllText("APIKey.txt").Trim();
|
var apiKey = File.ReadAllText("APIKey.txt").Trim();
|
||||||
apiKey = System.Net.WebUtility.UrlEncode(apiKey);
|
apiKey = WebUtility.UrlEncode(apiKey);
|
||||||
|
|
||||||
url = "http://www.omdbapi.com/?apikey=" + apiKey
|
url = "http://www.omdbapi.com/?apikey=" + apiKey
|
||||||
+ "&type=movie"
|
+ "&type=movie"
|
||||||
+ "&r=json";
|
+ "&r=json";
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> FetchMovieDetail(string id)
|
/// <summary>
|
||||||
|
/// Recupera i dettagli di un film dato il suo ID IMDB.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">ID IMDB del film da cercare.</param>
|
||||||
|
/// <returns>Un oggetto Movie con i dettagli del film.</returns>
|
||||||
|
public async Task<Movie> FetchMovieDetail(string id)
|
||||||
{
|
{
|
||||||
var requestUrl = url + "i=" + System.Net.WebUtility.UrlEncode(id);
|
var requestUrl = url + "&i=" + WebUtility.UrlEncode(id);
|
||||||
using var httpClient = new HttpClient();
|
using var httpClient = new HttpClient();
|
||||||
|
|
||||||
var response = await httpClient.GetStringAsync(requestUrl);
|
var response = await httpClient.GetStringAsync(requestUrl);
|
||||||
return response.ToString();
|
return JsonSerializer.Deserialize<Movie>(response)!;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> FetchMovies(string searchTitle)
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recupera una lista di film che corrispondono al titolo di ricerca.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchTitle">Titolo dei film da cercare.</param>
|
||||||
|
/// <returns>>Una lista di oggetti Movie che corrispondono alla ricerca.</returns>
|
||||||
|
public async Task<MovieSearch> FetchMovies(string searchTitle)
|
||||||
{
|
{
|
||||||
var requestUrl = url + "&t=" + System.Net.WebUtility.UrlEncode(searchTitle);
|
var requestUrl = url + "&s=" + WebUtility.UrlEncode(searchTitle);
|
||||||
using var httpClient = new HttpClient();
|
using var httpClient = new HttpClient();
|
||||||
|
|
||||||
var response = await httpClient.GetStringAsync(requestUrl);
|
var response = await httpClient.GetStringAsync(requestUrl);
|
||||||
return response.ToString();
|
return JsonSerializer.Deserialize<MovieSearch>(response)!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user