Esempio n. 1
0
        private async Task <List <Addon> > ScanAddons(
            WowClientType clientType,
            Action <Exception> onScanError)
        {
            var addonFolders = await _warcraftService.ListAddons(clientType);

            foreach (var provider in _providers)
            {
                try
                {
                    await provider.Scan(
                        clientType,
                        _wowUpService.GetClientAddonChannelType(clientType),
                        addonFolders.Where(af => af.MatchingAddon == null && af.Toc != null));
                }
                catch (Exception ex)
                {
                    _analyticsService.Track(ex, $"Addon scan failed {provider.Name}");
                    onScanError?.Invoke(new Exception($"Failed to scan from {provider.Name}"));
                }
            }

            Log.Debug($"Scanned {addonFolders.Count()} folders");

            var matchedAddonFolders = addonFolders.Where(af => af.MatchingAddon != null);
            var matchedGroups       = matchedAddonFolders.GroupBy(af => $"{af.MatchingAddon.ProviderName}{af.MatchingAddon.ExternalId}");

            return(matchedGroups
                   .Select(g => g.First().MatchingAddon)
                   .ToList());
        }
Esempio n. 2
0
        private async Task <List <Addon> > ScanAddons(WowClientType clientType)
        {
            var addonFolders = await _warcraftService.ListAddons(clientType);

            foreach (var provider in _providers)
            {
                try
                {
                    await provider.Scan(
                        clientType,
                        _wowUpService.GetDefaultAddonChannel(),
                        addonFolders.Where(af => af.MatchingAddon == null && af.Toc != null));
                }
                catch (Exception ex)
                {
                    _analyticsService.Track(ex, $"Addon scan failed {provider.Name}");
                }
            }

            var matchedAddonFolders = addonFolders.Where(af => af.MatchingAddon != null);
            var matchedGroups       = matchedAddonFolders.GroupBy(af => $"{af.MatchingAddon.ProviderName}{af.MatchingAddon.ExternalId}");

            return(matchedGroups
                   .Select(g => g.First().MatchingAddon)
                   .ToList());
        }
Esempio n. 3
0
        private async Task <List <Addon> > GetLocalAddons(WowClientType clientType)
        {
            var addonFolders = await _warcraftService.ListAddons(clientType);

            return(await MapAll(addonFolders, clientType));
        }