Example #1
0
        public void SetClientAddonChannelType(WowClientType clientType, AddonChannelType channelType)
        {
            var preferenceKey = GetClientDefaultAddonChannelKey(clientType);

            SetPreference(preferenceKey, channelType.ToString());
            _analyticsService.TrackUserAction("WowUp", $"ClientDefaultChannel|{clientType}", channelType.ToString());
        }
Example #2
0
 public Task Scan(
     WowClientType clientType,
     AddonChannelType addonChannelType,
     IEnumerable <AddonFolder> addonFolder)
 {
     return(Task.CompletedTask);
 }
Example #3
0
        private Addon GetAddon(
            WowClientType clientType,
            AddonChannelType addonChannelType,
            CurseScanResult scanResult)
        {
            var currentVersion = scanResult.ExactMatch.File;
            var authors        = string.Join(", ", scanResult.SearchResult.Authors.Select(author => author.Name));
            var folderList     = string.Join(",", scanResult.ExactMatch.File.Modules.Select(m => m.Foldername));
            var latestVersion  = GetLatestFiles(scanResult.SearchResult, clientType).First();

            return(new Addon
            {
                Author = string.Join(", ", scanResult.SearchResult.Authors.Select(author => author.Name)),
                Name = scanResult.SearchResult.Name,
                ChannelType = addonChannelType,
                AutoUpdateEnabled = false,
                ClientType = clientType,
                DownloadUrl = latestVersion.DownloadUrl,
                ExternalUrl = scanResult.SearchResult.WebsiteUrl,
                ExternalId = scanResult.SearchResult.Id.ToString(),
                FolderName = scanResult.AddonFolder.Name,
                GameVersion = currentVersion.GameVersion.FirstOrDefault(),
                InstalledAt = DateTime.Now,
                InstalledFolders = folderList,
                InstalledVersion = currentVersion.DisplayName,
                IsIgnored = false,
                LatestVersion = latestVersion.DisplayName,
                ProviderName = Name,
                ThumbnailUrl = GetThumbnailUrl(scanResult.SearchResult)
            });
        }
Example #4
0
 public Task Scan(
     WowClientType clientType,
     AddonChannelType addonChannelType,
     IEnumerable <AddonFolder> addonFolders)
 {
     Log.Debug($"{Name} Scanning {addonFolders.Count()} addons");
     return(Task.CompletedTask);
 }
Example #5
0
        public async Task Scan(
            WowClientType clientType,
            AddonChannelType addonChannelType,
            IEnumerable <AddonFolder> addonFolders)
        {
            Log.Debug($"{Name} Scanning {addonFolders.Count()} addons");
            var addons = await GetAllAddons(clientType);

            foreach (var addonFolder in addonFolders)
            {
                TukUiAddon addon = null;
                if (!string.IsNullOrEmpty(addonFolder.Toc.TukUiProjectId))
                {
                    addon = addons.FirstOrDefault(a => a.Id == addonFolder.Toc.TukUiProjectId);
                }
                else
                {
                    var results = await SearchAddons(clientType, addonFolder.Toc.Title);

                    addon = results.FirstOrDefault();
                }

                if (addon != null)
                {
                    addonFolder.MatchingAddon = new Addon
                    {
                        Author            = addon.Author,
                        AutoUpdateEnabled = false,
                        ChannelType       = addonChannelType,
                        ClientType        = clientType,
                        DownloadUrl       = addon.Url,
                        ExternalId        = addon.Id,
                        ExternalUrl       = addon.WebUrl,
                        FolderName        = addonFolder.Name,
                        Name             = addon.Name,
                        GameVersion      = addon.Patch,
                        InstalledAt      = DateTime.UtcNow,
                        InstalledFolders = addonFolder.Name,
                        InstalledVersion = addonFolder.Toc.Version,
                        IsIgnored        = false,
                        LatestVersion    = addon.Version,
                        ProviderName     = Name,
                        ThumbnailUrl     = addon.ScreenshotUrl
                    };
                }
            }
        }
Example #6
0
        public async Task Scan(
            WowClientType clientType,
            AddonChannelType addonChannelType,
            IEnumerable <AddonFolder> addonFolders)
        {
            Log.Debug($"{Name} Scanning {addonFolders.Count()} addons");
            var addonDirectory = addonFolders.FirstOrDefault()?.Directory.Parent.FullName;
            var scanResults    = await GetScanResults(addonFolders);

            await MapAddonFolders(scanResults, clientType);

            var addonIds = scanResults
                           .Where(sr => sr.ExactMatch != null)
                           .Select(sr => sr.ExactMatch.Id.ToString())
                           .Distinct();

            //var addonIdStr = string.Join(",", addonIds);

            var addonResults = await GetAllIds(addonIds);

            foreach (var addonFolder in addonFolders)
            {
                var scanResult = scanResults.First(sr => sr.AddonFolder.Name == addonFolder.Name);
                if (scanResult.ExactMatch == null)
                {
                    continue;
                }

                scanResult.SearchResult = addonResults.FirstOrDefault(ar => ar.Id == scanResult.ExactMatch.Id);
                if (scanResult.SearchResult == null)
                {
                    continue;
                }

                try
                {
                    addonFolder.MatchingAddon = GetAddon(clientType, addonChannelType, scanResult);
                }
                catch (Exception ex)
                {
                    _analyticsService.Track(ex, $"Failed to create addon for result {scanResult.FolderScanner.Fingerprint}");
                }
            }
        }
Example #7
0
        public async Task Scan(
            WowClientType clientType,
            AddonChannelType addonChannelType,
            IEnumerable <AddonFolder> addonFolders)
        {
            Log.Debug($"{Name} Scanning {addonFolders.Count()} addons");
            foreach (var addonFolder in addonFolders)
            {
                if (string.IsNullOrEmpty(addonFolder.Toc.WowInterfaceId))
                {
                    continue;
                }

                var details = await GetAddonDetails(addonFolder.Toc.WowInterfaceId);

                addonFolder.MatchingAddon = new Addon
                {
                    Author            = details.Author,
                    AutoUpdateEnabled = false,
                    ChannelType       = addonChannelType,
                    ClientType        = clientType,
                    DownloadUrl       = details.DownloadUri,
                    ExternalId        = details.Id.ToString(),
                    ExternalUrl       = GetAddonUrl(details),
                    FolderName        = addonFolder.Name,
                    GameVersion       = string.Empty,
                    InstalledAt       = DateTime.UtcNow,
                    InstalledFolders  = addonFolder.Name,
                    InstalledVersion  = addonFolder.Toc.Version,
                    IsIgnored         = false,
                    LatestVersion     = details.Version,
                    Name         = details.Title,
                    ProviderName = Name,
                    ThumbnailUrl = GetThumbnailUrl(details)
                };
            }
        }
Example #8
0
        private Addon GetAddon(
            WowClientType clientType,
            AddonChannelType addonChannelType,
            AddonFolder addonFolder,
            CurseSearchResult searchResult)
        {
            if (addonFolder == null || searchResult == null)
            {
                return(null);
            }

            var currentVersion = addonFolder.Toc.Version;
            var latestFile     = GetLatestFiles(searchResult, clientType).First();
            var authors        = GetAuthor(searchResult);

            return(new Addon
            {
                Author = authors,
                Name = searchResult.Name,
                ChannelType = addonChannelType,
                AutoUpdateEnabled = false,
                ClientType = clientType,
                DownloadUrl = latestFile.DownloadUrl,
                ExternalUrl = searchResult.WebsiteUrl,
                ExternalId = searchResult.Id.ToString(),
                FolderName = addonFolder.Name,
                GameVersion = latestFile.GameVersion.FirstOrDefault(),
                InstalledAt = DateTime.Now,
                InstalledFolders = string.Join(",", GetFolderNames(latestFile)),
                InstalledVersion = currentVersion,
                IsIgnored = false,
                LatestVersion = latestFile.DisplayName,
                ProviderName = Name,
                ThumbnailUrl = GetThumbnailUrl(searchResult)
            });
        }
Example #9
0
 private AddonSearchResultFile GetLatestFile(AddonSearchResult searchResult, AddonChannelType channelType)
 {
     return(searchResult.Files
            .Where(lf => lf.ChannelType <= channelType)
            .FirstOrDefault());
 }
Example #10
0
 private AddonSearchResultFile GetLatestFile(AddonSearchResult searchResult, AddonChannelType channelType)
 {
     return(searchResult.Files
            .OrderByDescending(f => f.ReleaseDate)
            .FirstOrDefault(lf => lf.ChannelType <= channelType));
 }
Example #11
0
 public void SetDefaultAddonChannel(AddonChannelType type)
 {
     SetPreference(Constants.Preferences.DefaultAddonChannelKey, type.ToString());
 }
Example #12
0
        public void SetClientAddonChannelType(WowClientType clientType, AddonChannelType channelType)
        {
            var preferenceKey = GetClientDefaultAddonChannelKey(clientType);

            SetPreference(preferenceKey, channelType.ToString());
        }