using System.Net; using System.Text.Json; /// /// Servizio per interagire con l'API OMDB. /// Semplifica le richieste per ottenere dettagli sui film. /// 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"; } /// /// 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) { return await FetchAsync("i", id); } /// /// 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) { 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); try { return JsonSerializer.Deserialize(response)!; } catch (JsonException) { return default; } } }