private static bool HandleBadModsReceipt(string jsonStr, out BadModsDatabase badModsDb) { badModsDb = new BadModsDatabase(); JObject respJson = JObject.Parse(jsonStr); if (respJson.Count == 0) { return(false); } badModsDb = respJson.ToObject <BadModsDatabase>(); if (badModsDb == null) { throw new NullReferenceException("No bad mods found"); } return(true); }
private static void RetrieveBadModsAsync(Action <bool, BadModsDatabase> onCompletion) { Action <Exception, string> onError = (e, jsonStr) => { if (e is JsonReaderException) { LogHelpers.Alert("Bad JSON: " + jsonStr.Trunc(256)); } else if (e is WebException || e is NullReferenceException) { LogHelpers.Alert(("'" + jsonStr.Trunc(64) + "'" ?? "...") + " - " + e.Message); } else { LogHelpers.Alert(("'" + jsonStr.Trunc(64) + "'" ?? "...") + " - " + e.ToString()); } }; Action <bool, string> onWrappedCompletion = (success, jsonStr) => { BadModsDatabase badModsDb; if (success) { try { success = GetModInfo.HandleBadModsReceipt(jsonStr, out badModsDb); } catch (Exception e) { badModsDb = new BadModsDatabase(); onError(e, jsonStr); } } else { badModsDb = new BadModsDatabase(); } onCompletion(success, badModsDb); }; WebConnectionHelpers.MakeGetRequestAsync(GetModInfo.BadModsUrl, e => onError(e, ""), onWrappedCompletion); }
private static void RegisterBadMods(ModInfoListLoadHookArguments modInfoArgs, BadModsDatabase badMods) { foreach (var kv in modInfoArgs.ModInfo) { string modName = kv.Key; BasicModInfo modInfo = kv.Value; modInfo.IsBadMod = badMods.ContainsKey(modName); } }