Exemple #1
0
        /// <summary>Get metadata about a mod from the Nexus API.</summary>
        /// <param name="id">The Nexus mod ID.</param>
        /// <returns>Returns the mod info if found, else <c>null</c>.</returns>
        private async Task <NexusMod> GetModFromApiAsync(uint id)
        {
            // fetch mod
            Mod mod = await this.ApiClient.Mods.GetMod("stardewvalley", (int)id);

            ModFileList files = await this.ApiClient.ModFiles.GetModFiles("stardewvalley", (int)id, FileCategory.Main, FileCategory.Optional);

            // yield info
            return(new NexusMod
            {
                Name = mod.Name,
                Version = SemanticVersion.TryParse(mod.Version, out ISemanticVersion version) ? version?.ToString() : mod.Version,
                Url = this.GetModUrl(id),
                Downloads = files.Files
                            .Select(file => (IModDownload) new GenericModDownload(file.Name, file.Description, file.FileVersion))
                            .ToArray()
            });
Exemple #2
0
        /// <summary>Get metadata about a mod from the Nexus API.</summary>
        /// <param name="id">The Nexus mod ID.</param>
        /// <returns>Returns the mod info if found, else <c>null</c>.</returns>
        private async Task <NexusMod> GetModFromApiAsync(uint id)
        {
            // fetch mod
            Mod mod = await this.ApiClient.Mods.GetMod("stardewvalley", (int)id);

            ModFileList files = await this.ApiClient.ModFiles.GetModFiles("stardewvalley", (int)id, FileCategory.Main, FileCategory.Optional);

            // get versions
            if (!SemanticVersion.TryParse(mod.Version, out ISemanticVersion mainVersion))
            {
                mainVersion = null;
            }
            ISemanticVersion latestFileVersion = null;

            foreach (string rawVersion in files.Files.Select(p => p.FileVersion))
            {
                if (!SemanticVersion.TryParse(rawVersion, out ISemanticVersion cur))
                {
                    continue;
                }
                if (mainVersion != null && !cur.IsNewerThan(mainVersion))
                {
                    continue;
                }
                if (latestFileVersion != null && !cur.IsNewerThan(latestFileVersion))
                {
                    continue;
                }

                latestFileVersion = cur;
            }

            // yield info
            return(new NexusMod
            {
                Name = mod.Name,
                Version = SemanticVersion.TryParse(mod.Version, out ISemanticVersion version) ? version?.ToString() : mod.Version,
                LatestFileVersion = latestFileVersion,
                Url = this.GetModUrl(id)
            });