* Table to search movies implemented * OMDB service for API connection Reviewed-on: #2 Co-authored-by: Berack96 <giacomobertolazzi7@gmail.com> Co-committed-by: Berack96 <giacomobertolazzi7@gmail.com>
61 lines
2.1 KiB
C#
61 lines
2.1 KiB
C#
using System.Net;
|
|
using System.Text.Json;
|
|
|
|
/// <summary>
|
|
/// Servizio per interagire con l'API OMDB.
|
|
/// Semplifica le richieste per ottenere dettagli sui film.
|
|
/// </summary>
|
|
class OmdbService
|
|
{
|
|
private readonly string url;
|
|
private readonly HttpClient httpClient = new();
|
|
|
|
public OmdbService()
|
|
{
|
|
var apiKey = File.ReadAllText("APIKey.txt").Trim();
|
|
apiKey = WebUtility.UrlEncode(apiKey);
|
|
|
|
url = "http://www.omdbapi.com/?apikey=" + apiKey
|
|
+ "&type=movie"
|
|
+ "&r=json";
|
|
}
|
|
|
|
/// <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)
|
|
{
|
|
return await FetchAsync<Movie>("i", id);
|
|
}
|
|
|
|
|
|
/// <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)
|
|
{
|
|
return await FetchAsync<MovieSearch>("s", searchTitle);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Esegue una richiesta HTTP GET e deserializza la risposta JSON in un oggetto del tipo specificato.
|
|
/// </summary>
|
|
/// <typeparam name="T">Tipo dell'oggetto di ritorno.</typeparam>
|
|
/// <param name="query">Parametro della query HTTP.</param>
|
|
/// <param name="value">Valore del parametro della query HTTP.</param>
|
|
/// <returns>Un oggetto del tipo specificato deserializzato dalla risposta JSON.</returns>
|
|
private async Task<T?> FetchAsync<T>(string query, string value)
|
|
{
|
|
var requestUrl = url + "&" + query + "=" + WebUtility.UrlEncode(value);
|
|
var response = await httpClient.GetStringAsync(requestUrl);
|
|
try {
|
|
return JsonSerializer.Deserialize<T>(response)!;
|
|
} catch (JsonException) {
|
|
return default;
|
|
}
|
|
}
|
|
} |