public Task <ModVersion> GetLatestVersion(ModMetadata meta, ModReleaseType releaseType = ModReleaseType.Any) { if (!(meta is CurseforgeModMetadata)) { throw new Exception("Metadata is not of Curseforge's type. Cannot fetch mod versions with this."); } IEnumerable <ModVersion> versions = GetRecentVersions(meta, 1, releaseType).Result; return(Task.FromResult(versions.First())); }
public Task <IEnumerable <ModVersion> > GetRecentVersions(ModMetadata meta, int count = 5, ModReleaseType releaseType = ModReleaseType.Any) { if (!(meta is CurseforgeModMetadata)) { throw new Exception("Metadata is not of Curseforge's type. Cannot fetch mod versions with this."); } CurseforgeModMetadata metaCF = (CurseforgeModMetadata)meta; if (String.IsNullOrEmpty(metaCF.MinecraftVersion)) { throw new Exception("Minecraft version was not set on metadata, cannot properly fetch versions."); } if (!metaCF.Versions.ContainsKey(metaCF.MinecraftVersion)) { return(null); } IEnumerable <ModVersion> versions = metaCF.Versions[metaCF.MinecraftVersion]; if (releaseType != ModReleaseType.Any) { versions = versions.Where(v => v.GetReleaseType() == releaseType); } IEnumerable <ModVersion> limitedList = versions.Take(count); foreach (ModVersion mv in limitedList) { mv.MetadataId = meta.Id; } return(Task.FromResult(limitedList)); }