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) }); }
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()); }
private bool HasMatchingFingerprint(CurseScanResult scanResult, CurseMatch exactMatch) { return(exactMatch.File.Modules.Any(m => m.Fingerprint == scanResult.FolderScanner.Fingerprint)); }