Beispiel #1
0
        private Addon CreateAddon(
            string folderName,
            AddonSearchResult searchResult,
            AddonSearchResultFile latestFile,
            WowClientType clientType,
            AddonChannelType?channelType     = null,
            IEnumerable <Addon> dependencies = null)
        {
            if (latestFile == null)
            {
                return(null);
            }

            return(new Addon
            {
                Name = searchResult.Name,
                ThumbnailUrl = searchResult.ThumbnailUrl,
                LatestVersion = latestFile.Version,
                ClientType = clientType,
                ExternalId = searchResult.ExternalId,
                FolderName = folderName,
                GameVersion = latestFile.GameVersion,
                Author = searchResult.Author,
                DownloadUrl = latestFile.DownloadUrl,
                ExternalUrl = searchResult.ExternalUrl,
                ProviderName = searchResult.ProviderName,
                ChannelType = channelType ?? _wowUpService.GetClientAddonChannelType(clientType),
                AutoUpdateEnabled = _wowUpService.GetClientDefaultAutoUpdate(clientType),
                Dependencies = dependencies
            });
        }
Beispiel #2
0
        public async Task <Addon> Map(string addonName, string folderName, WowClientType clientType)
        {
            var searchResults = await Search(addonName, folderName, clientType);

            AddonSearchResult     nearestResult = null;
            AddonSearchResultFile latestFile    = null;

            foreach (var result in searchResults)
            {
                latestFile = GetLatestFile(result, AddonChannelType.Stable);
                if (latestFile == null)
                {
                    continue;
                }

                nearestResult = result;
                break;
            }

            if (nearestResult == null || latestFile == null)
            {
                return(null);
            }

            return(CreateAddon(folderName, nearestResult, latestFile, clientType));
        }
Beispiel #3
0
        public async Task <AddonSearchResult> GetById(string addonId, WowClientType clientType)
        {
            var results = await GetReleases(addonId);

            if (!results.Any())
            {
                return(null);
            }

            var latestRelease = GetLatestRelease(results);

            if (latestRelease == null)
            {
                return(null);
            }

            var asset = GetValidAsset(latestRelease, clientType);

            if (asset == null)
            {
                return(null);
            }

            var repository = await GetRepository(addonId);

            var author         = repository.Owner.Login;
            var authorImageUrl = repository.Owner.AvatarUrl;

            var name = GetAddonName(addonId);

            var searchResultFile = new AddonSearchResultFile
            {
                ChannelType = AddonChannelType.Stable,
                DownloadUrl = asset.BrowserDownloadUrl,
                Folders     = new List <string> {
                    name
                },
                GameVersion  = string.Empty,
                Version      = asset.Name,
                ReleaseDate  = asset.CreatedAt,
                Dependencies = Enumerable.Empty <AddonSearchResultDependency>()
            };

            var searchResult = new AddonSearchResult
            {
                Author      = author,
                ExternalId  = addonId,
                ExternalUrl = asset.Url,
                Files       = new List <AddonSearchResultFile> {
                    searchResultFile
                },
                Name         = name,
                ProviderName = Name,
                ThumbnailUrl = authorImageUrl
            };

            return(searchResult);
        }
Beispiel #4
0
 private Addon GetAddon(
     string folderName,
     AddonSearchResult searchResult,
     WowClientType clientType)
 {
     return(new Addon
     {
         Name = searchResult.Name,
         ThumbnailUrl = searchResult.ThumbnailUrl,
         LatestVersion = searchResult.Version,
         ClientType = clientType,
         CurseAddonId = searchResult.ExternalId,
         FolderName = folderName,
         GameVersion = searchResult.GameVersion,
         Author = searchResult.Author,
         DownloadUrl = searchResult.DownloadUrl
     });
 }
Beispiel #5
0
 private AddonSearchResultFile GetLatestFile(AddonSearchResult searchResult, AddonChannelType channelType)
 {
     return(searchResult.Files
            .Where(lf => lf.ChannelType <= channelType)
            .FirstOrDefault());
 }
Beispiel #6
0
 private AddonSearchResultFile GetLatestFile(AddonSearchResult searchResult, AddonChannelType channelType)
 {
     return(searchResult.Files
            .OrderByDescending(f => f.ReleaseDate)
            .FirstOrDefault(lf => lf.ChannelType <= channelType));
 }