public async Task<List<MovieGenre>> GetGenresAsync(CancellationToken ct)
{
var watch = Stopwatch.StartNew();
var genres = new List<MovieGenre>();
try
{
await Task.Run(async () =>
{
var englishGenre = await TmdbClient.GetMovieGenresAsync(new EnglishLanguage().Culture);
genres.AddRange((await TmdbClient.GetMovieGenresAsync()).Select(genre => new MovieGenre
{
EnglishName = englishGenre.FirstOrDefault(p => p.Id == genre.Id)?.Name,
TmdbGenre = genre
}));
}, ct);
}
catch (Exception exception) when (exception is TaskCanceledException)
{
Logger.Debug(
"GetGenresAsync cancelled.");
}
catch (Exception exception)
{
Logger.Error(
$"GetGenresAsync: {exception.Message}");
throw;
}
finally
{
watch.Stop();
var elapsedMs = watch.ElapsedMilliseconds;
Logger.Debug(
$"GetGenresAsync in {elapsedMs} milliseconds.");
}
return genres;
}