internal string ToQueryString()
        {
            var queryParams = new List <string>();

            if (KeepNull != null)
            {
                queryParams.Add("keepNull=" + KeepNull.ToString().ToLower());
            }
            if (MergeObjects != null)
            {
                queryParams.Add("mergeObjects=" + MergeObjects.ToString().ToLower());
            }
            if (WaitForSync != null)
            {
                queryParams.Add("waitForSync=" + WaitForSync.ToString().ToLower());
            }
            if (IgnoreRevs != null)
            {
                queryParams.Add("ignoreRevs=" + IgnoreRevs.ToString().ToLower());
            }
            if (ReturnOld != null)
            {
                queryParams.Add("returnOld=" + ReturnOld.ToString().ToLower());
            }
            if (ReturnNew != null)
            {
                queryParams.Add("returnNew=" + ReturnNew.ToString().ToLower());
            }
            return(string.Join("&", queryParams));
        }
Ejemplo n.º 2
0
        static void MenuDoMergeObjects()
        {
            MergeObjects instance = EditorToolbarLoader.GetInstance <MergeObjects>();

            if (instance != null)
            {
                UnityEditor.ProBuilder.EditorUtility.ShowNotification(instance.DoAction().notification);
            }
        }
Ejemplo n.º 3
0
 public void PostMainConfig([FromBody] JObject data)
 {
     try
     {
         Global.Configuration = MergeObjects.MergeCsDictionaryAndSave(Global.Configuration, Global.DataPath + "/MainConfig.json", data).ToObject <MainConfig>();
     }
     catch (Exception ex)
     {
         Global.Logger.Error(@"Can not save config file: " + ex);
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Add your init code here
        /// </summary>
        /// <param name="builder"></param>
        protected override void Load(ContainerBuilder builder)
        {
            Global.Logger.Information("Plugin " + PluginName + " initialized...");

            if (!Directory.Exists(Global.DataPath + "/" + PluginName))
            {
                Directory.CreateDirectory(Global.DataPath + "/" + PluginName);
            }

            PluginConfig = MergeObjects.MergeCsDictionaryAndSave(new PluginConfig(), Global.DataPath + "/" + PluginName + "/PluginConfig.json").ToObject <PluginConfig>();
        }
Ejemplo n.º 5
0
        private static IList Merge(
            IList list1,
            IList list2,
            bool matchesOnly,
            IComparer comparer,
            MergeObjects mergeDelegate)
        {
            ArrayList arrayList;

            if (list1 != null && list2 != null)
            {
                arrayList = new ArrayList(Math.Min(list1.Count, list2.Count));
                Hashtable hashtable = new Hashtable();
                int       num       = 0;
                for (int index1 = 0; index1 < list1.Count; ++index1)
                {
                    bool flag = false;
                    for (int index2 = num; index2 < list2.Count; ++index2)
                    {
                        if (!hashtable.ContainsKey(index2) && comparer.Compare(list1[index1], list2[index2]) == 0)
                        {
                            arrayList.Add(mergeDelegate(list1[index1], list2[index2]));
                            hashtable.Add(index2, true);
                            if (num == index2)
                            {
                                ++num;
                            }
                            flag = true;
                            break;
                        }
                    }
                    if (!flag && !matchesOnly)
                    {
                        arrayList.Add(mergeDelegate(list1[index1], null));
                    }
                }
            }
            else if (!matchesOnly && list1 != null)
            {
                arrayList = new ArrayList(list1.Count);
                foreach (object obj in list1)
                {
                    arrayList.Add(mergeDelegate(obj, null));
                }
            }
            else
            {
                arrayList = new ArrayList();
            }
            return(arrayList);
        }
Ejemplo n.º 6
0
        public static IList Merge(
            IList list1,
            IList list2,
            bool matchesOnly,
            IComparer comparer,
            MergeObjects mergeDelegate)
        {
            ArrayList arrayList = new ArrayList();

            if (list1 != null && list2 != null)
            {
                for (int index1 = 0; index1 < list1.Count; ++index1)
                {
                    bool flag = false;
                    for (int index2 = 0; index2 < list2.Count; ++index2)
                    {
                        if (comparer.Compare(list1[index1], list2[index2]) == 0)
                        {
                            arrayList.Add(mergeDelegate(list1[index1], list2[index2]));
                            list2.RemoveAt(index2);
                            flag = true;
                            break;
                        }
                    }
                    if (!flag && !matchesOnly)
                    {
                        arrayList.Add(mergeDelegate(list1[index1], null));
                    }
                }
                if (!matchesOnly)
                {
                    foreach (object obj in list2)
                    {
                        arrayList.Add(mergeDelegate(obj, null));
                    }
                }
            }
            else if (!matchesOnly && (list1 != null || list2 != null))
            {
                foreach (object obj in list1 != null ? list1 : list2)
                {
                    arrayList.Add(mergeDelegate(obj, null));
                }
            }
            return(arrayList);
        }
Ejemplo n.º 7
0
 public void CommonFiles()
 {
     Global.CoreConfig = MergeObjects.MergeCsDictionaryAndSave(Global.CoreConfig, Global.DataPath + "/CoreConfig.json");
 }
Ejemplo n.º 8
0
        public void DefaultCoreSettings()
        {
            Global.CoreConfig["coreConfig"] = new JObject
            {
                ["enableDebug"]       = false,
                ["enableDevelopment"] = false
            };


            Global.CoreConfig["coreConfig"] = new JObject
            {
                ["webPort"]             = 8888,
                ["webLocalHostOnly"]    = false,
                ["webDefaultUsername"]  = "******",
                ["webDefaultUserEmail"] = "admin@localhost",
                ["webDefaultPassword"]  = "******"
            };

            //Read Settings file
            if (!File.Exists(Global.DataPath + "/MainConfig.json"))
            {
                //Init Global Config with default currency array
                Global.Configuration = MergeObjects.MergeCsDictionaryAndSave(new MainConfig(), Global.DataPath + "/MainConfig.json").ToObject <MainConfig>();
                Global.Configuration.TradeOptions.MarketBlackList = new List <string> {
                };
                Global.Configuration.TradeOptions.OnlyTradeList   = new List <string> {
                    "ETHBTC", "LTCBTC"
                };
                Global.Configuration.TradeOptions.AlwaysTradeList = new List <string> {
                    "ETHBTC", "LTCBTC"
                };
                var defaultExchangeOptions = new ExchangeOptions
                {
                    Exchange  = Exchange.Binance,
                    ApiKey    = "",
                    ApiSecret = ""
                };
                Global.Configuration.ExchangeOptions.Add(defaultExchangeOptions);
                var defaultDisplayOptions = new DisplayOptions()
                {
                    DisplayFiatCurrency = "USD"
                };
                Global.Configuration.DisplayOptions = defaultDisplayOptions;
                Global.Configuration = MergeObjects.MergeCsDictionaryAndSave(Global.Configuration, Global.DataPath + "/MainConfig.json", JObject.FromObject(Global.Configuration)).ToObject <MainConfig>();
            }
            else
            {
                Global.Configuration = MergeObjects.MergeCsDictionaryAndSave(new MainConfig(), Global.DataPath + "/MainConfig.json").ToObject <MainConfig>();
            }

            //Create RSA Key for TokenProvider
            if (string.IsNullOrEmpty(Global.Configuration.SystemOptions.RsaPrivateKey))
            {
                using (RandomNumberGenerator rng = new RNGCryptoServiceProvider())
                {
                    byte[] tokenData = new byte[32];
                    rng.GetBytes(tokenData);
                    Global.Configuration.SystemOptions.RsaPrivateKey = Convert.ToBase64String(tokenData);
                }
                Global.Configuration = MergeObjects.MergeCsDictionaryAndSave(Global.Configuration, Global.DataPath + "/MainConfig.json", JObject.FromObject(Global.Configuration)).ToObject <MainConfig>();
            }
        }
Ejemplo n.º 9
0
        static bool MenuVerifyMergeObjects()
        {
            MergeObjects instance = EditorToolbarLoader.GetInstance <MergeObjects>();

            return(instance != null && instance.enabled);
        }
Ejemplo n.º 10
0
        public ActionResult Navigation()
        {
            JObject pluginMenu = new JObject();

            JToken htmlPagesSearchFolders = (Global.CoreRuntime["Plugins"]).DeepClone();

            //Add Core Folder
            htmlPagesSearchFolders["Core"] = new JObject
            {
                ["Enabled"] = true,
                ["WwwRoot"] = Global.AppPath + "/wwwroot"
            };

            foreach (var jToken in htmlPagesSearchFolders)
            {
                var plugin = (JProperty)jToken;
                //string pluginName = (plugin.Name).Replace("MachinaCore.Plugin.", "");
                string pluginName = plugin.Name;
                if (htmlPagesSearchFolders[plugin.Name] == null || (bool)htmlPagesSearchFolders[plugin.Name]["Enabled"] == false)
                {
                    Global.Logger.Information(plugin.Name + @" not found -> Ignoring");
                    continue;
                }

                if (!Directory.Exists((string)htmlPagesSearchFolders[plugin.Name]["WwwRoot"] + "/pages"))
                {
                    Global.Logger.Information(plugin.Name + @"has no pages folder -> Ignoring");
                    continue;
                }

                if (htmlPagesSearchFolders[plugin.Name]["WwwRoot"] != null)
                {
                    JObject pageMenuConfig = new JObject();

                    String[] pluginHtmlFiles = Directory.GetFiles((string)htmlPagesSearchFolders[plugin.Name]["WwwRoot"] + "/pages", "*.html", SearchOption.TopDirectoryOnly);

                    JObject pluginMenuConfig =
                        new JObject
                    {
                        ["menuTitle"]     = (plugin.Name).Replace("MachinaCore.Plugin.", ""),
                        ["menuEnabled"]   = true,
                        ["menuFolder"]    = true,
                        ["menuAutoOpen"]  = false,
                        ["menuIconClass"] = "fas fa-folder",
                        ["menuOrder"]     = 99
                    };

                    if (System.IO.File.Exists((string)htmlPagesSearchFolders[plugin.Name]["WwwRoot"] + "/pages/__plugin__.json"))
                    {
                        JObject pluginMenuConfigFile = JObject.Parse(System.IO.File.ReadAllText((string)htmlPagesSearchFolders[plugin.Name]["WwwRoot"] + "/pages/__plugin__.json"));
                        pluginMenuConfig = MergeObjects.CombineJObjects(pluginMenuConfig, pluginMenuConfigFile);
                    }

                    if (!(bool)pluginMenuConfig["menuEnabled"])
                    {
                        continue;
                    }

                    int    countPages       = 0;
                    string countCurrentName = "";

                    foreach (string fileName in pluginHtmlFiles)
                    {
                        string shortName            = pluginName + "_" + Path.GetFileName(fileName);
                        bool   useUserDefinedParent = false;

                        if (System.IO.File.Exists(fileName.Replace(".html", ".json")))
                        {
                            JObject pluginConfigJsonFile = JObject.Parse(System.IO.File.ReadAllText(fileName.Replace(".html", ".json")));

                            if (pluginConfigJsonFile["menuEnabled"] == null)
                            {
                                pluginConfigJsonFile["menuEnabled"] = true;
                            }

                            if ((bool)pluginConfigJsonFile["menuEnabled"] == false)
                            {
                                continue;
                            }

                            pageMenuConfig[shortName] = new JObject
                            {
                                ["menuTitle"]           = Path.GetFileName(fileName),
                                ["menuHyperlink"]       = plugin.Name + "/pages/" + Path.GetFileName(fileName),
                                ["menuEnabled"]         = true,
                                ["menuIconClass"]       = "fas fa-star",
                                ["menuCustomFolder"]    = "",
                                ["menuOrder"]           = 99,
                                ["menuAjaxLoad"]        = true,
                                ["menuRuntimeIsFolder"] = false
                            };

                            pageMenuConfig[shortName] = MergeObjects.CombineJObjects((JObject)pageMenuConfig[shortName], pluginConfigJsonFile);

                            if (plugin.Name == "Core")
                            {
                                pageMenuConfig[shortName]["menuHyperlink"] = "pages/" + Path.GetFileName(fileName);
                                pageMenuConfig[shortName]["menuOrder"]     = 1;
                            }

                            if ((string)pageMenuConfig[shortName]["menuCustomFolder"] != "")
                            {
                                useUserDefinedParent = true;
                            }

                            if (useUserDefinedParent)
                            {
                                //Create Category of not exist
                                if (pluginMenu[(string)pageMenuConfig[shortName]["menuCustomFolder"]] == null)
                                {
                                    pluginMenu[(string)pageMenuConfig[shortName]["menuCustomFolder"]] =
                                        new JObject
                                    {
                                        ["menuOrder"]           = 99,
                                        ["menuIconClass"]       = pluginMenuConfig["menuIconClass"],
                                        ["menuTitle"]           = (string)pageMenuConfig[shortName]["menuCustomFolder"],
                                        ["menuEnabled"]         = pluginMenuConfig["menuEnabled"],
                                        ["menuRuntimeIsFolder"] = true
                                    };
                                }
                                pluginMenu[(string)pageMenuConfig[shortName]["menuCustomFolder"]][shortName] = pageMenuConfig[shortName];
                                pageMenuConfig.Remove(shortName);
                                continue;
                            }

                            countPages       = countPages + 1;
                            countCurrentName = shortName;

                            if (plugin.Name == "Core")
                            {
                                pluginMenu[shortName] = pageMenuConfig[shortName];
                                pluginMenu[shortName]["menuOrder"] = 1;
                                pageMenuConfig.Remove(shortName);
                                continue;
                            }

                            if (!(bool)pluginMenuConfig["menuFolder"])
                            {
                                pluginMenu[shortName] = pageMenuConfig[shortName];
                                pluginMenu[shortName]["menuRuntimeIsFolder"] = false;
                                pageMenuConfig.Remove(shortName);
                            }
                        }
                    }

                    if (pageMenuConfig.HasValues)
                    {
                        if (countPages == 1)
                        {
                            pluginMenu[countCurrentName] = pageMenuConfig[countCurrentName];
                        }
                        else
                        {
                            pluginMenu[pluginName] = pageMenuConfig;
                            pluginMenu[pluginName]["menuOrder"]           = pluginMenuConfig["menuOrder"];
                            pluginMenu[pluginName]["menuIconClass"]       = pluginMenuConfig["menuIconClass"];
                            pluginMenu[pluginName]["menuTitle"]           = pluginMenuConfig["menuTitle"];
                            pluginMenu[pluginName]["menuEnabled"]         = pluginMenuConfig["menuEnabled"];
                            pluginMenu[pluginName]["menuRuntimeIsFolder"] = true;
                        }
                    }
                }
            }

            //Sort Inner Nodes
            foreach (var pluginFolderInner in pluginMenu)
            {
                JObject currentValue = (JObject)pluginFolderInner.Value;

                JObject sortedPluginFolderInner = new JObject(currentValue.Properties()
                                                              .Where(obj => currentValue[obj.Name].Type == JTokenType.Object)
                                                              .OrderBy(obj => (int)currentValue[obj.Name]["menuOrder"])
                                                              .ThenBy(obj => (string)currentValue[obj.Name]["menuTitle"], StringComparer.OrdinalIgnoreCase)
                                                              );

                if (sortedPluginFolderInner.HasValues)
                {
                    //We rewrite this after sort -> Save old values
                    int    currentMenuOrder           = (int)pluginMenu[pluginFolderInner.Key]["menuOrder"];
                    string currentPluginMenuIconClass = (string)pluginMenu[pluginFolderInner.Key]["menuIconClass"];
                    string currentName         = (string)pluginMenu[pluginFolderInner.Key]["menuTitle"];
                    bool   currentEnableMenu   = (bool)pluginMenu[pluginFolderInner.Key]["menuEnabled"];
                    bool   menuRuntimeIsFolder = (bool)pluginMenu[pluginFolderInner.Key]["menuRuntimeIsFolder"];
                    pluginMenu[pluginFolderInner.Key] = sortedPluginFolderInner;
                    pluginMenu[pluginFolderInner.Key]["menuOrder"]           = currentMenuOrder;
                    pluginMenu[pluginFolderInner.Key]["menuIconClass"]       = currentPluginMenuIconClass;
                    pluginMenu[pluginFolderInner.Key]["menuTitle"]           = currentName;
                    pluginMenu[pluginFolderInner.Key]["menuEnabled"]         = currentEnableMenu;
                    pluginMenu[pluginFolderInner.Key]["menuRuntimeIsFolder"] = menuRuntimeIsFolder;
                }
            }

            //Sort by main values
            JObject pluginMenuSorted = new JObject(pluginMenu.Properties()
                                                   .OrderBy(obj => (int)pluginMenu[obj.Name]["menuOrder"])
                                                   .ThenBy(obj => (string)pluginMenu[obj.Name]["menuTitle"], StringComparer.OrdinalIgnoreCase)
                                                   );

            return(new JsonResult(pluginMenuSorted));
        }