private async Task <IReadOnlyCollection <bool> > UpdateMoviesAsync(ISpinWheelService spinWheelService, IReadOnlyCollection <IPlexMovieMetadata> plexMovieMetadataItems, IReadOnlyCollection <IMovieIdentifier> embyMovieIdentifiers) { var cts = new CancellationTokenSource(); IEmbyImportMovieLogic embyImportMovieLogic = null; try { embyImportMovieLogic = _logicFactory.CreateLogic <IEmbyImportMovieLogic>(); embyImportMovieLogic.ItemProcessed += spinWheelService.OnItemProcessed; await spinWheelService.StartSpinWheelAsync(cts.Token); var updateTasks = plexMovieMetadataItems .Select(plexMovieMetaDataItem => { var embyMovieIdentifier = embyMovieIdentifiers.First(x => plexMovieMetaDataItem.Filenames.Contains(x.Filename)); return(embyImportMovieLogic.RunAsync(plexMovieMetaDataItem, embyMovieIdentifier)); }) .ToArray(); return(await Task.WhenAll(updateTasks)); } finally { if (embyImportMovieLogic != null) { embyImportMovieLogic.ItemProcessed -= spinWheelService.OnItemProcessed; } spinWheelService.StopSpinWheel(cts); cts.Dispose(); } }
private static async Task <IReadOnlyCollection <IMovieIdentifier> > GetMovieIdentifiersAsync(IEmbyService embyService, ISpinWheelService spinWheelService, ILibraryIdentifier libraryIdentifier) { var cts = new CancellationTokenSource(); try { await spinWheelService.StartSpinWheelAsync(cts.Token); return(await embyService.GetMovieIdentifiersAsync(libraryIdentifier)); } finally { spinWheelService.StopSpinWheel(cts); cts.Dispose(); } }
private static async Task <ILibraryIdentifier> GetLibraryIdentifierAsync(IEmbyService embyService, ISpinWheelService spinWheelService, string libraryName) { var cts = new CancellationTokenSource(); try { await spinWheelService.StartSpinWheelAsync(cts.Token); return(await embyService.GetLibraryIdentifierAsync(libraryName)); } finally { spinWheelService.StopSpinWheel(cts); cts.Dispose(); } }