Exemple #1
0
        private async Task SyncAddons(
            WowClientType clientType,
            IEnumerable <Addon> addons,
            IAddonProvider provider)
        {
            var providerAddonIds = GetExternalIdsForProvider(provider, addons);

            if (!providerAddonIds.Any())
            {
                return;
            }

            var searchResults = await provider.GetAll(clientType, providerAddonIds);

            foreach (var result in searchResults)
            {
                var addon      = addons.FirstOrDefault(addon => addon.ExternalId == result.ExternalId);
                var latestFile = GetLatestFile(result, addon.ChannelType);

                if (result == null || latestFile == null || latestFile.Version == addon.LatestVersion)
                {
                    if (addon.ThumbnailUrl != result.ThumbnailUrl)
                    {
                        addon.ThumbnailUrl = result.ThumbnailUrl;
                        _addonRepository.UpdateItem(addon);
                        await SyncThumbnail(addon, true);
                    }
                    else
                    {
                        await SyncThumbnail(addon);
                    }

                    continue;
                }

                addon.LatestVersion = latestFile.Version;
                addon.Name          = result.Name;
                addon.Author        = result.Author;
                addon.DownloadUrl   = latestFile.DownloadUrl;

                if (!string.IsNullOrEmpty(latestFile.GameVersion))
                {
                    addon.GameVersion = latestFile.GameVersion;
                }

                addon.ThumbnailUrl = result.ThumbnailUrl;
                addon.ExternalUrl  = result.ExternalUrl;

                await SyncThumbnail(addon);

                _addonRepository.UpdateItem(addon);
            }
        }
Exemple #2
0
 private List <string> GetExternalIdsForProvider(IAddonProvider provider, IEnumerable <Addon> addons)
 {
     return(addons.Where(addon => addon.ProviderName == provider.Name)
            .Select(addon => addon.ExternalId)
            .ToList());
 }