public async Task ExceptionThrown_LogsException() { var exception = new Exception("Failed"); _mediaItemProcessor.GetResultAsync(_episodeInfo, MediaItemTypes.Episode, Arg.Any <IEnumerable <EmbyItemId> >()) .Throws(exception); await _episodeProvider.GetMetadata(_episodeInfo, CancellationToken.None); _logger.Received(1).ErrorException("Failed to get data for episode 'EpisodeName'", exception); }
public async Task ExceptionThrown_LogsException() { var exception = new Exception("Failed"); _mediaItemProcessor.GetResultAsync(_seriesInfo, MediaItemTypes.Series, Enumerable.Empty <EmbyItemId>()) .Throws(exception); await _seriesProvider.GetMetadata(_seriesInfo, CancellationToken.None); _logger.Received(1).ErrorException("Failed to get data for series 'SeriesName'", exception); }
public Task <MetadataResult <Episode> > GetMetadata(EpisodeInfo info, CancellationToken cancellationToken) { var metadataResult = Try(() => { var result = _mediaItemProcessor.GetResultAsync(info, MediaItemTypes.Episode, GetParentIds(info)); return(result.Map(either => either.Match(r => { _log.Info($"Found data for episode '{info.Name}': '{r.EmbyMetadataResult.Item.Name}'"); info.IndexNumber = null; info.ParentIndexNumber = null; info.Name = ""; info.ProviderIds = new Dictionary <string, string>(); return r.EmbyMetadataResult; }, failure => { _log.Error($"Failed to get data for episode '{info.Name}': {failure.Reason}"); return EmptyMetadataResult; }) )); }) .IfFail(e => { _log.ErrorException($"Failed to get data for episode '{info.Name}'", e); return(EmptyMetadataResult.AsTask()); }); return(metadataResult); }
public Task <MetadataResult <Series> > GetMetadata(SeriesInfo info, CancellationToken cancellationToken) { var metadataResult = Try(() => { if (_pluginConfiguration.ExcludedSeriesNames.Contains(info.Name, StringComparer.InvariantCultureIgnoreCase)) { _log.Info($"Skipping series '{info.Name}' as it is excluded"); return(EmptyMetadataResult.AsTask()); } var result = _mediaItemProcessor.GetResultAsync(info, MediaItemTypes.Series, Enumerable.Empty <EmbyItemId>()); return(result.Map(either => either.Match(r => { _log.Info($"Found data for series '{info.Name}': '{r.EmbyMetadataResult.Item.Name}'"); info.IndexNumber = null; info.ParentIndexNumber = null; info.Name = ""; info.ProviderIds = new Dictionary <string, string>(); return r.EmbyMetadataResult; }, failure => { _log.Error($"Failed to get data for series '{info.Name}': {failure.Reason}"); return EmptyMetadataResult; }) )); }) .IfFail(e => { _log.ErrorException($"Failed to get data for series '{info.Name}'", e); return(EmptyMetadataResult.AsTask()); }); return(metadataResult); }