Exemplo n.º 1
0
        /*********
        ** 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 _);
        }