Esempio n. 1
0
        private async Task ProcessInputUrls()
        {
            if (!App.StartupOptions?.InputURLs.Any() ?? false)
            {
                return;
            }

            await App.StartupOptions.InputURLs.ForEachAsync(2, async x =>
            {
                PotentialAddon potentialAddon = null;
                try
                {
                    potentialAddon = await _addonService.GetAddonByUri(new Uri(x), SelectedClientType);
                }
                catch
                {
                    MessageBox.Show($"Failed to import addon by URI: {x}");
                    return;
                }

                if (potentialAddon != null)
                {
                    try
                    {
                        await _addonService.InstallAddon(potentialAddon, SelectedClientType);
                    }
                    catch
                    {
                        MessageBox.Show($"Failed to install addon {potentialAddon.Name}");
                    }
                }
            });
        }
Esempio n. 2
0
        public async Task InstallAddon(
            PotentialAddon potentialAddon,
            WowClientType clientType,
            Action <AddonInstallState, decimal> onUpdate = null)
        {
            var existingAddon = _addonRepository.GetByExternalId(potentialAddon.ExternalId, clientType);

            if (existingAddon != null)
            {
                throw new AddonAlreadyInstalledException();
            }

            var addon = await GetAddon(potentialAddon.ExternalId, potentialAddon.ProviderName, clientType);

            _addonRepository.SaveItem(addon);

            await InstallAddon(addon.Id, onUpdate);
        }
Esempio n. 3
0
        public async Task InstallAddon(
            PotentialAddon potentialAddon,
            WowClientType clientType,
            Action <AddonInstallState, decimal> onUpdate = null)
        {
            var provider     = _providers.First(p => p.Name == potentialAddon.ProviderName);
            var searchResult = await provider.GetById(potentialAddon.ExternalId, clientType);

            var existingAddon = _addonRepository.GetByExternalId(searchResult.ExternalId, clientType);

            if (existingAddon != null)
            {
                throw new AddonAlreadyInstalledException();
            }

            var addon = GetAddon(searchResult.Folders.FirstOrDefault(), searchResult, clientType);

            _addonRepository.SaveItem(addon);

            await InstallAddon(addon.Id, onUpdate);
        }
Esempio n. 4
0
        public async Task <PotentialAddon> Search(Uri addonUri, WowClientType clientType)
        {
            var repoPath      = addonUri.LocalPath;
            var repoExtension = Path.GetExtension(repoPath);

            if (string.IsNullOrEmpty(repoPath) || !string.IsNullOrEmpty(repoExtension))
            {
                throw new InvalidUrlException($"Invlaid URL: {addonUri}");
            }

            var results = await GetReleases(repoPath);

            var latestRelease = GetLatestRelease(results);
            var asset         = GetValidAsset(latestRelease, clientType);

            if (asset == null)
            {
                throw new NoReleaseFoundException();
            }

            var repository = await GetRepository(repoPath);

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

            var potentialAddon = new PotentialAddon
            {
                Author        = author,
                DownloadCount = asset.DownloadCount,
                ExternalId    = repoPath,
                ExternalUrl   = latestRelease.Url,
                Name          = asset.Name,
                ProviderName  = Name,
                ThumbnailUrl  = authorImageUrl
            };

            return(potentialAddon);
        }
Esempio n. 5
0
 public static string GetThumbnailUrl(this PotentialAddon addon)
 {
     return(string.IsNullOrEmpty(addon.ThumbnailUrl)
         ? "pack://application:,,,/WowUp;component/Assets/wowup_logo_1.png"
         : addon.ThumbnailUrl);
 }