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);
        }
예제 #3
0
        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);
            }
        }