/********* ** Private methods *********/ /// <summary>Asynchronously fetch mod metadata from the wiki.</summary> public async Task <ModListModel> FetchDataAsync() { return(await this.Cache.GetOrCreateAsync($"{nameof(ModsController)}_mod_list", async entry => { WikiModList data = await new ModToolkit().GetWikiCompatibilityListAsync(); ModListModel model = new ModListModel( stableVersion: data.StableVersion, betaVersion: data.BetaVersion, mods: data .Mods .Select(mod => new ModModel(mod)) .OrderBy(p => Regex.Replace(p.Name.ToLower(), "[^a-z0-9]", "")) // ignore case, spaces, and special characters when sorting ); entry.AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(this.SuccessCacheMinutes); return model; })); }
public static async Task UpdateWikiAsync() { WikiModList wikiCompatList = await new ModToolkit().GetWikiCompatibilityListAsync(); BackgroundService.WikiCache.SaveWikiData(wikiCompatList.StableVersion, wikiCompatList.BetaVersion, wikiCompatList.Mods, out _, out _); }