示例#1
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)
            });
        }
示例#2
0
        public async Task <List <CurseScanResult> > GetScanResults(IEnumerable <AddonFolder> addonFolders)
        {
            var scanResults = new ConcurrentBag <CurseScanResult>();
            await addonFolders.ForEachAsync(3, async addonFolder =>
            {
                var scanner = await new CurseFolderScanner(addonFolder.Directory).ScanFolder();

                var scanResult = new CurseScanResult
                {
                    FolderScanner = scanner,
                    AddonFolder   = addonFolder
                };

                scanResults.Add(scanResult);
            });

            return(scanResults.ToList());
        }
示例#3
0
 private bool HasMatchingFingerprint(CurseScanResult scanResult, CurseMatch exactMatch)
 {
     return(exactMatch.File.Modules.Any(m => m.Fingerprint == scanResult.FolderScanner.Fingerprint));
 }