Esempio n. 1
0
        private static async Task <List <ImportItem> > scanAccountAsync(ApiExtended apiExtended, Account account, LibraryOptions.ResponseGroupOptions libraryResponseGroups)
        {
            ArgumentValidator.EnsureNotNull(account, nameof(account));

            Log.Logger.Information("ImportLibraryAsync. {@DebugInfo}", new
            {
                Account = account?.MaskedLogEntry ?? "[null]"
            });

            logTime($"pre scanAccountAsync {account.AccountName}");

            var dtoItems = await apiExtended.GetLibraryValidatedAsync(libraryResponseGroups, Configuration.Instance.ImportEpisodes);

            logTime($"post scanAccountAsync {account.AccountName} qty: {dtoItems.Count}");

            return(dtoItems.Select(d => new ImportItem {
                DtoItem = d, AccountId = account.AccountId, LocaleName = account.Locale?.Name
            }).ToList());
        }
Esempio n. 2
0
        private static async Task <List <ImportItem> > scanAccountsAsync(Func <Account, Task <ApiExtended> > apiExtendedfunc, Account[] accounts, LibraryOptions.ResponseGroupOptions libraryResponseGroups)
        {
            var tasks = new List <Task <List <ImportItem> > >();

            foreach (var account in accounts)
            {
                // get APIs in serial b/c of logins. do NOT move inside of parallel (Task.WhenAll)
                var apiExtended = await apiExtendedfunc(account);

                // add scanAccountAsync as a TASK: do not await
                tasks.Add(scanAccountAsync(apiExtended, account, libraryResponseGroups));
            }

            // import library in parallel
            var arrayOfLists = await Task.WhenAll(tasks);

            var importItems = arrayOfLists.SelectMany(a => a).ToList();

            return(importItems);
        }