Newtonsoft.Json.Linq.JToken.ToString()

Here are the examples of the csharp api Newtonsoft.Json.Linq.JToken.ToString() taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

836 Examples 7

19 Source : ConditionTaskForm.cs
with Apache License 2.0
from 214175590

private void AddTaskItem(JObject obj)
        {
            ListViewItem item = new ListViewItem();
            item.Tag = obj;
            item.Text = obj["name"].ToString();

            ListViewItem.ListViewSubItem subItem = new ListViewItem.ListViewSubItem();
            subItem.Text = obj["code"].ToString();
            item.SubItems.Add(subItem);

            customShellListView.Items.Add(item);
        }

19 Source : ConditionTaskForm.cs
with Apache License 2.0
from 214175590

private void button2_Click(object sender, EventArgs e)
        {
            string name = task_name.Text;
            int count = customShellListView.Items.Count;

            Object item1 = scb_condition1.SelectedItem;
            Object item2 = scb_condition2.SelectedItem;
            Object item3 = scb_condition3.SelectedItem;

            if (string.IsNullOrWhiteSpace(name))
            {
                MessageBox.Show(this, "请输入任务名称");
                task_name.Focus();
            }
            else if (item1 == null)
            {
                MessageBox.Show(this, "请至少选择一个条件");
            }
            else if (count == 0)
            {
                MessageBox.Show(this, "请添加任务指令脚本(Shell)");
                shell_name.Focus();
            }
            else
            {
                string condition = "";
                ConditionItem ci1 = (ConditionItem)item1;
                condition += gereplacedemUuid(ci1) + "," + (scb_status1.SelectedIndex == 1 ? "Y" : "N");
                if(item2 != null){
                    ConditionItem ci2 = (ConditionItem)item2;
                    condition += gereplacedemCondi(1) + gereplacedemUuid(ci2) + "," + (scb_status2.SelectedIndex == 1 ? "Y" : "N");

                    if (item3 != null)
                    {
                        ConditionItem ci3 = (ConditionItem)item2;
                        condition += gereplacedemCondi(2) + gereplacedemUuid(ci3) + "," + (scb_status3.SelectedIndex == 1 ? "Y" : "N");
                    }
                }
                
                ListView.ListViewItemCollection coll = customShellListView.Items;
                if (null == cmdShell)
                {
                    cmdShell = new CmdShell();
                    cmdShell.Uuid = Guid.NewGuid().ToString("N");
                }
                JObject obj = null;
                JArray list = new JArray();
                List<TaskShell> shellList = new List<TaskShell>();
                TaskShell task = null;
                cmdShell.Name = name;
                cmdShell.TaskType = TaskType.Condition;
                cmdShell.Condition = condition;
                cmdShell.Type = "条件任务";
                foreach(ListViewItem item in coll){
                    obj = (JObject)item.Tag;
                    task = new TaskShell();
                    task.Uuid = Guid.NewGuid().ToString("N");
                    task.Shell = obj["code"].ToString();
                    task.Name = obj["name"].ToString();
                    shellList.Add(task);
                }
                cmdShell.ShellList = shellList;

                if (null != this.callback)
                {
                    this.callback(cmdShell);
                }

                this.Close();
            }
        }

19 Source : TimedTaskForm.cs
with Apache License 2.0
from 214175590

private void AddTaskItem(JObject obj)
        {
            ListViewItem item = new ListViewItem();
            item.Tag = obj;
            item.Text = obj["time"].ToString();

            ListViewItem.ListViewSubItem subItem = new ListViewItem.ListViewSubItem();
            subItem.Text = obj["name"].ToString();
            item.SubItems.Add(subItem);

            subItem = new ListViewItem.ListViewSubItem();
            subItem.Text = obj["code"].ToString();
            item.SubItems.Add(subItem);

            customShellListView.Items.Add(item);
        }

19 Source : TimedTaskForm.cs
with Apache License 2.0
from 214175590

private void button2_Click(object sender, EventArgs e)
        {
            string name = task_name.Text;
            int count = customShellListView.Items.Count;
            if (string.IsNullOrWhiteSpace(name))
            {
                MessageBox.Show(this, "请输入任务名称");
                task_name.Focus();
            }
            else if (count == 0)
            {
                MessageBox.Show(this, "请添加任务指令脚本(Shell)");
                shell_name.Focus();
            }
            else
            {
                ListView.ListViewItemCollection coll = customShellListView.Items;
                if (null == cmdShell)
                {
                    cmdShell = new CmdShell();
                    cmdShell.Type = "定时任务";
                    cmdShell.TaskType = TaskType.Timed;
                }                
                cmdShell.Name = name;
                
                JObject obj = null;
                JArray list = new JArray();
                List<TaskShell> shellList = new List<TaskShell>();
                TaskShell task = null;
                
                foreach(ListViewItem item in coll){
                    obj = (JObject)item.Tag;
                    task = new TaskShell();
                    task.Uuid = Guid.NewGuid().ToString("N");
                    task.DateTime = obj["time"].ToString();
                    task.Shell = obj["code"].ToString();
                    task.Name = obj["name"].ToString();
                    shellList.Add(task);
                }
                cmdShell.ShellList = shellList;

                if (null != this.callback)
                {
                    this.callback(cmdShell);
                }

                this.Close();
            }
        }

19 Source : TomcatMonitorForm.cs
with Apache License 2.0
from 214175590

public void LoadProjectList()
        {
            ThreadPool.QueueUserWorkItem((a) => {
                List<JObject> itemList = new List<JObject>();
                // 1、获取webapps下的项目
                ArrayList files = (ArrayList)monitorForm.RunSftpShell(string.Format("ls {0}webapps/", l_tomcat_path.Text), false, false);
                if (files != null)
                {
                    string dirname = "";
                    JObject json = null;
                    Object obj = null;
                    for (int ii = 0; ii < files.Count; ii++)
                    {
                        obj = files[ii];
                        if (obj is ChannelSftp.LsEntry)
                        {
                            dirname = ((ChannelSftp.LsEntry)obj).getFilename();
                            if (dirname.IndexOf(".") == -1 && dirname.IndexOf(":") == -1)
                            {
                                json = new JObject();
                                json.Add("name", dirname);
                                json.Add("url", l_visit_url.Text + (dirname == "ROOT" ? "" : "/" + dirname));
                                json.Add("path", l_tomcat_path.Text + "webapps/" + dirname);
                                itemList.Add(json);
                            }
                        }
                    }
                }
                // 2、获取server.xml中的映射配置
                List<JObject> itemList2 = loadTomcatServerProject();
                foreach (JObject p in itemList2)
                {
                    itemList.Add(p);
                }
                // 渲染列表
                this.BeginInvoke((MethodInvoker)delegate()
                {
                    projects.Items.Clear();
                    ListViewItem item = null;
                    ListViewItem.ListViewSubItem subItem = null;
                    foreach (JObject pro in itemList)
                    {
                        item = new ListViewItem();
                        item.Tag = pro;
                        item.Name = pro["name"].ToString();
                        item.Text = pro["url"].ToString();

                        subItem = new ListViewItem.ListViewSubItem();
                        subItem.Text = pro["path"].ToString();
                        item.SubItems.Add(subItem);
                    
                        projects.Items.Add(item);
                    }
                });
            });
        }

19 Source : FrmBrowser.cs
with GNU General Public License v3.0
from 9vult

private void BtnAdd_Click(object sender, EventArgs e)
        {
            string url = gfxBrowser.Url.ToString();
            string name = string.Empty;
            string num = string.Empty;
            switch (cmboSource.SelectedItem.ToString().ToLower())
            {
                case "mangadex":
                    name = url.Split('/')[5];
                    num = url.Split('/')[4];
                    url = MangaDexHelper.MANGADEX_URL + "/api/manga/" + num;

                    Manga m = new MangaDex(FileHelper.CreateDI(Path.Combine(FileHelper.APP_ROOT.FullName, num)), url);

                    FrmEdit editor = new FrmEdit(m, false);
                    DialogResult result = editor.ShowDialog();

                    if (result == DialogResult.OK)
                    {
                        // cleanup
                        foreach (Chapter ch in m.GetChapters())
                        {
                            try
                            {
                                string s = ch.GetChapterRoot().ToString();
                                Directory.Delete(ch.GetChapterRoot().ToString());
                            } catch (Exception) { }
                        }

                        WFClient.dbm.GetMangaDB().Add(m);

                        String[] dls = m.GetDLChapters();
                        if (dls == null || dls[0].Equals("-1"))
                        {
                            foreach (Chapter c in m.GetSetPrunedChapters(false))
                            {
                                WFClient.dlm.AddToQueue(new MangaDexDownload(c));
                            }
                        } else
                        {   // Only download selected chapters
                            foreach (Chapter c in m.GetSetPrunedChapters(false))
                            {
                                if (dls.Contains(c.GetNum()))
                                {
                                    WFClient.dlm.AddToQueue(new MangaDexDownload(c));
                                }
                            }
                        }
                        // Start downloading the first one
                        WFClient.dlm.DownloadNext();
                    } else
                    {

                    }
                    break;
                case "kissmanga":

                    // MessageBox.Show("Sorry, can't do this yet! ;(\n\n(ignore the download started box)");
                    // break;
                    // TODO

                    string kName = KissMangaHelper.GetName(url);
                    string kHash = KissMangaHelper.GetHash(url);

                    // Manga km = new Manga(FileHelper.CreateDI(Path.Combine(FileHelper.APP_ROOT.FullName, num)), url);

                    Manga km = new KissManga(FileHelper.CreateDI(Path.Combine(FileHelper.APP_ROOT.FullName, kHash)), url);

                    FrmEdit editor1 = new FrmEdit(km, false);
                    DialogResult result1 = editor1.ShowDialog();

                    if (result1 == DialogResult.OK)
                    {
                        // cleanup
                        foreach (Chapter ch in km.GetChapters())
                        {
                            try
                            {
                                string s = ch.GetChapterRoot().ToString();
                                Directory.Delete(ch.GetChapterRoot().ToString());
                            }
                            catch (Exception) { }
                        }

                        WFClient.dbm.GetMangaDB().Add(km);

                        String[] dls = km.GetDLChapters();
                        if (dls == null || dls[0].Equals("-1"))
                        {
                            foreach (Chapter c in km.GetSetPrunedChapters(false))
                            {
                                WFClient.dlm.AddToQueue(new KissMangaDownload(c));
                            }
                        }
                        else
                        {   // Only download selected chapters
                            foreach (Chapter c in km.GetSetPrunedChapters(false))
                            {
                                if (dls.Contains(c.GetNum()))
                                {
                                    WFClient.dlm.AddToQueue(new KissMangaDownload(c));
                                }
                            }
                        }
                        // Start downloading the first one
                        WFClient.dlm.DownloadNext();
                    }
                    else
                    {

                    }
                    break;
                case "nhentai": 
                    num = url.Split('/')[4];
                    name = gfxBrowser.Doreplacedentreplacedle.Substring(0, gfxBrowser.Doreplacedentreplacedle.IndexOf("nhentai:") - 3);

                    JObject hJson = new JObject(
                        new JProperty("hentai",
                            new JObject(
                                new JProperty("replacedle", name),
                                new JProperty("num",  num),
                                new JProperty("url",  url))));

                    DirectoryInfo hDir = FileHelper.CreateDI(Path.Combine(FileHelper.APP_ROOT.FullName, "h" + num));

                    Hentai h = new Nhentai(hDir, hJson.ToString());

                    FrmEdit edit = new FrmEdit(h, false);
                    DialogResult rezult = edit.ShowDialog();

                    if (rezult == DialogResult.OK)
                    {
                        WFClient.dbm.GetMangaDB().Add(h);

                        Chapter ch = h.GetChapters()[0];
                        WFClient.dlm.AddToQueue(new NhentaiDownload(ch));
                        // Start downloading the first one
                        WFClient.dlm.DownloadNext();
                    } 
                    break;
            }
            MessageBox.Show("Download started! You may close the browser at any time, but please keep MikuReader open until the download has completed.");
        }

19 Source : BrowsePage.cs
with GNU General Public License v3.0
from 9vult

private void BtnAdd_Clicked(object sender, EventArgs e)
        {
            string url = txtUrl.Text;
            string name = string.Empty;
            string num = string.Empty;

            if (url == "" || url == null)
            {
                PopUp("Error", "Please enter a URL");
                return;
            }

            if (url.StartsWith("https://mangadex.org/replacedle/"))
            {
                // TODO: Name
                name = url.Split('/')[5];
                num = url.Split('/')[4];
                url = "https://mangadex.org/api/manga/" + num;

                Manga m = new Manga(FileHelper.CreateDI(Path.Combine(FileHelper.APP_ROOT.FullName, num)), url);

                MClient.dbm.GetMangaDB().Add(m);

                foreach (Chapter c in m.GetChapters())
                {
                    MClient.dlm.AddToQueue(new MangaDexDownload(c));
                }
                // Start downloading the first one
                MClient.dlm.DownloadNext();
            }
            else if (url.StartsWith("https://nhentai.net/g/"))
            {
                num = url.Split('/')[4];
                name = txtName.Text != "" ? txtName.Text : "Hentai " + new Random().Next();

                JObject hJson = new JObject(
                    new JProperty("hentai",
                        new JObject(
                            new JProperty("replacedle", name),
                            new JProperty("num", num),
                            new JProperty("url", url))));

                DirectoryInfo hDir = FileHelper.CreateDI(Path.Combine(FileHelper.APP_ROOT.FullName, "h" + num));

                Hentai h = new Hentai(hDir, hJson.ToString());
                MClient.dbm.GetMangaDB().Add(h);

                Chapter ch = h.GetChapters()[0];
                MClient.dlm.AddToQueue(new NhentaiDownload(ch));
                // Start downloading the first one
                MClient.dlm.DownloadNext();
            } else
            {
                PopUp("Error", "Invalid URL!");
                return;
            }
            PopUp("Info", "Download started!\nPlease do not close MikuReader until the download is complete.");
        }

19 Source : BitfinexSocketApi.cs
with MIT License
from aabiryukov

private void SocketMessage(object sender, MessageReceivedEventArgs args)
        {
            var dataObject = JToken.Parse(args.Message);
            if(dataObject is JObject)
            {
                Log.Write(LogVerbosity.Info, $"Received object message: {dataObject}");
                var evnt = dataObject["event"].ToString();
                if (evnt == "info")
                    HandleInfoEvent(dataObject.ToObject<BitfinexInfo>());
                else if (evnt == "auth")
                    HandleAuthenticationEvent(dataObject.ToObject<BitfinexAuthenticationResponse>());
                else if (evnt == "subscribed")
                    HandleSubscriptionEvent(dataObject.ToObject<BitfinexSubscriptionResponse>());
                else if (evnt == "error")
                    HandleErrorEvent(dataObject.ToObject<BitfinexSocketError>());                
                else
                    HandleUnhandledEvent((JObject)dataObject);                
            }
            else if(dataObject is JArray)
            {
                Log.Write(LogVerbosity.Info, $"Received array message: {dataObject}");
                if(dataObject[1].ToString() == "hb")
                {
                    // Heartbeat, no need to do anything with that
                    return;
                }

                if (dataObject[0].ToString() == "0")
                    HandleAccountEvent(dataObject.ToObject<BitfinexSocketEvent>());
                else
                    HandleChannelEvent((JArray)dataObject);
            }
        }

19 Source : BitfinexApi.cs
with MIT License
from aabiryukov

public BitfinexMarginInfoResponse GetMarginInformation()
		{
			var marginPost = new BitfinexPostBase
			{
				Request = MarginInfoRequstUrl,
				Nonce = Common.UnixTimeStampUtc().ToString(CultureInfo.InvariantCulture)
			};

			var response = GetRestResponse(marginPost);

			var jArr = JsonConvert.DeserializeObject(response) as JArray;
			if (jArr == null || jArr.Count == 0)
				return null;

			var marginInfoStr = jArr[0].ToString();
			var marginInfoResponseObj = JsonConvert.DeserializeObject<BitfinexMarginInfoResponse>(marginInfoStr);

			Log.Info("Margin Info: {0}", marginInfoResponseObj.ToString());

			return marginInfoResponseObj;
		}

19 Source : Handlers.cs
with Apache License 2.0
from aequabit

public static void Products(string json)
        {
            /**
             * Decode the JSON and add all products to the list.
             */
            JArray products = JArray.Parse(json);
            foreach (JToken product in products)
            {
                Worker.instance.loader.AddProduct(
                    JsonConvert.DeserializeObject<Product>(product.ToString())
                );
            }
        }

19 Source : LayoutDescriptionEx.cs
with GNU General Public License v3.0
from aglab2

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null)
                return null;

            JObject jo = JObject.Load(reader);
            switch (jo["Type"].Value<int>())
            {
                case 1:
                    return JsonConvert.DeserializeObject<StarsLineDescription>(jo.ToString(), SpecifiedSubclreplacedConversion);
                case 2:
                    return JsonConvert.DeserializeObject<TextOnlyLineDescription>(jo.ToString(), SpecifiedSubclreplacedConversion);
                default:
                    throw new Exception();
            }
        }

19 Source : SyncManager.cs
with GNU General Public License v3.0
from aglab2

public void SendNet64Data(string name, byte[] data, string location)
        {
            if (!(data is object))
                return;

            var postStarsClient = new ExtendedWebClient();

            JObject json = new JObject
            {
                ["player"] = name,
                ["state"] = Convert.ToBase64String(data),
                ["location"] = location
            };

            string sendString = json.ToString();

            NameValueCollection values = new NameValueCollection
            {
                { "net", sendString }
            };

            postStarsClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            postStarsClient.Headers.Add(HttpRequestHeader.Cookie, token.ToString());
            postStarsClient.UploadValuesAsync(new Uri(url + post), "POST", values);
        }

19 Source : BybitServer.cs
with Apache License 2.0
from AlexWan

private async void MessageReader(CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                try
                {
                    if (!queue_messages_received_from_fxchange.IsEmpty && queue_messages_received_from_fxchange.TryDequeue(out string mes))
                    {
                        JToken response = JToken.Parse(mes);

                        if (response.First.Path == "success")
                        {

                            bool is_success = response.SelectToken("success").Value<bool>();

                            if (is_success)
                            {
                                string type = JToken.Parse(response.SelectToken("request").ToString()).SelectToken("op").Value<string>();

                                if (response_handlers.ContainsKey(type))
                                {
                                    response_handlers[type].Invoke(response);
                                }
                                else
                                {
                                    SendLogMessage(mes, LogMessageType.System);
                                }
                            }
                            else if (!is_success)
                            {
                                string type = JToken.Parse(response.SelectToken("request").ToString()).SelectToken("op").Value<string>();
                                string error_mssage = response.SelectToken("ret_msg").Value<string>();

                                if (type == "subscribe" && error_mssage.Contains("already"))
                                    continue;


                                SendLogMessage("Broken response success marker " + type,  LogMessageType.Error);
                            }
                        }

                        else if (response.First.Path == "topic") //orderBookL2_25.BTCUSD
                        {
                            string type = response.SelectToken("topic").Value<string>().Split('.')[0];

                            if (response_handlers.ContainsKey(type))
                            {
                                response_handlers[type].Invoke(response);
                            }
                            else
                            {
                                SendLogMessage(mes, LogMessageType.System);
                            }
                        }

                        else
                        {
                            SendLogMessage("Broken response topic marker " + response.First.Path,  LogMessageType.Error);
                        }
                    }
                    else
                    {
                        await Task.Delay(20);
                    }
                }
                catch (TaskCanceledException)
                {
                    return;
                }
                catch (Exception exception)
                {
                    SendLogMessage("MessageReader error: " + exception, LogMessageType.Error);
                }
            }
        }

19 Source : FTXOrderCreator.cs
with Apache License 2.0
from AlexWan

public Order Create(JToken data)
        {
            var order = new Order();
            var orderMarketId = data.SelectToken(IdPath).ToString();
            var status = data.SelectToken(StatusPath).ToString();

            order.NumberMarket = orderMarketId;
            order.TimeCallBack = data.SelectToken(TimePath).Value<DateTime>();
            order.Price = data.SelectToken(PricePath).Value<decimal?>() ?? default;
            order.SecurityNameCode = data.SelectToken(SecurityNamePath).ToString();
            order.Side = data.SelectToken(SidePath).ToString() == "sell" ?
                Side.Sell :
                Side.Buy;
            order.Volume = data.SelectToken(SizePath).Value<decimal>();
            order.TypeOrder = data.SelectToken(OrderTypePath).ToString() == "limit" ?
                OrderPriceType.Limit :
                OrderPriceType.Market;
            order.State = ConvertOrderStatus(status);

            return order;
        }

19 Source : ExmoClient.cs
with Apache License 2.0
from AlexWan

public void GetMarketDepth(string securities)
        {
            if (securities == "")
            {
                return;
            }

            // var jsonCurrency = ApiQuery("order_book", null, securities);

            // ask_quanreplacedy - объем всех ордеров на продажу
            // ask_amount - сумма всех ордеров на продажу
            // ask_top - минимальная цена продажи
            // bid_quanreplacedy - объем всех ордеров на покупку
            // bid_amount - сумма всех ордеров на покупку
            // bid_top - максимальная цена покупки
            // bid - список ордеров на покупку, где каждая строка это цена, количество и сумма
            // ask - список ордеров на продажу, где каждая строка это цена, количество и сумма

            var jsonCurrency = ApiQuery("order_book", new Dictionary<string, string>(), securities, 20);

            string[] secs = securities.Split(',');

            for (int i = 0; i < secs.Length; i++)
            {
                var jProperties = JToken.Parse(jsonCurrency)[secs[i]]; //.Children<JProperty>();

                MarketDepth depth = new MarketDepth();
                depth.SecurityNameCode = secs[i];

                var jBid =
                    JToken.Parse(jProperties.SelectToken("bid").ToString());

                List<MarketDepthLevel> Bids = new List<MarketDepthLevel>();

                foreach (var bid in jBid)
                {
                    MarketDepthLevel newBid = new MarketDepthLevel();

                    var str = bid.ToArray();
                    newBid.Price = str[0].ToString()
                        .Replace("{","")
                        .Replace("}", "")
                        .ToDecimal();

                    newBid.Bid = str[1].ToString()
                        .Replace("{", "")
                        .Replace("}", "")
                        .ToDecimal();
                    //newBid.Bid = bid..SelectToken("price").ToString().ToDecimal();
                    Bids.Add(newBid);
                }

                depth.Bids = Bids;


                var jAsk =
                    JToken.Parse(jProperties.SelectToken("ask").ToString());

                List<MarketDepthLevel> Ask = new List<MarketDepthLevel>();

                foreach (var ask in jAsk)
                {
                    MarketDepthLevel newAsk = new MarketDepthLevel();

                    var str = ask.ToArray();
                    newAsk.Price = str[0].ToString()
                        .Replace("{", "")
                        .Replace("}", "")
                        .ToDecimal();

                    newAsk.Ask = str[1].ToString()
                        .Replace("{", "")
                        .Replace("}", "")
                        .ToDecimal();
                    //newBid.Bid = bid..SelectToken("price").ToString().ToDecimal();
                    Ask.Add(newAsk);
                }

                depth.Asks = Ask;

                if (UpdateMarketDepth != null)
                {
                    UpdateMarketDepth(depth);
                }
            }
        }

19 Source : ExmoClient.cs
with Apache License 2.0
from AlexWan

public void ExecuteOrder(Order order)
        {

            lock (_lockOrder)
            {
                try
                {
                    if (IsConnected == false)
                    {
                        order.State = OrderStateType.Fail;

                        if (MyOrderEvent != null)
                        {
                            MyOrderEvent(order);
                        }

                        return;
                    }

                    /* pair - валютная пара
                     quanreplacedy - кол - во по ордеру
                     price - цена по ордеру
                     type - тип ордера, может принимать следующие значения:
                     buy - ордер на покупку
                     sell - ордер на продажу*/

                    Dictionary<string, string> param = new Dictionary<string, string>();

                    param.Add("pair", order.SecurityNameCode);
                    param.Add("type", order.Side == Side.Buy ? "buy" : "sell");
                    param.Add("quanreplacedy",
                        order.Volume.ToString(CultureInfo.InvariantCulture)
                            .Replace(CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator, "."));
                    param.Add("price",
                        order.Price.ToString(CultureInfo.InvariantCulture)
                            .Replace(CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator, "."));

                    var jsonCurrency = ApiQuery("order_create", param);

                    string res =
                        JToken.Parse(jsonCurrency).SelectToken("result").ToString();

                    if (Convert.ToBoolean(res.ToLower()) != true)
                    {
                        order.State = OrderStateType.Fail;

                        if (MyOrderEvent != null)
                        {
                            MyOrderEvent(order);
                        }

                        string error =
                            JToken.Parse(jsonCurrency).SelectToken("error").ToString();

                        SendLogMessage("Exmo order execution error. " + error, LogMessageType.Error);

                        return;
                    }

                    string id =
                        JToken.Parse(jsonCurrency).SelectToken("order_id").ToString();

                    order.NumberMarket = id;
                    order.State = OrderStateType.Activ;

                    /* "result": true,
                     "error": "",
                     "order_id": 123456*/

                    if (MyOrderEvent != null)
                    {
                        MyOrderEvent(order);
                    }

                }
                catch (Exception ex)
                {
                    SendLogMessage(ex.ToString(), LogMessageType.Error);
                }
            }
        }

19 Source : FTXTradesCreator.cs
with Apache License 2.0
from AlexWan

public MyTrade CreateMyTrade(JToken data)
        {
            var trade = new MyTrade();

            trade.SecurityNameCode = data.SelectToken(SecurityNamePath).ToString();
            trade.NumberOrderParent = data.SelectToken(OrderIdPath).ToString();
            trade.Price = data.SelectToken(PricePath).Value<decimal>();
            trade.Volume = data.SelectToken(SizePath).Value<decimal>();
            trade.Side = data.SelectToken(SidePath).ToString() == "sell" ? Side.Sell : Side.Buy;
            trade.NumberTrade = data.SelectToken(TradeIdPath).ToString();
            trade.Time = data.SelectToken(TimePath).Value<DateTime>();

            return trade;
        }

19 Source : FTXServer.cs
with Apache License 2.0
from AlexWan

private async void MessageReader(CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                try
                {
                    if (!_queueMessagesReceivedFromExchange.IsEmpty &&
                        _queueMessagesReceivedFromExchange.TryDequeue(out string mes))
                    {
                        var response = JToken.Parse(mes);
                        var type = response.SelectToken("type").ToString();
                        if (_responseHandlers.ContainsKey(type))
                        {
                            lock (_locker)
                            {
                                _responseHandlers[type].Invoke(response);
                            }                        
                        }
                        else
                        {
                            SendLogMessage(mes, LogMessageType.System);
                        }
                    }
                    else
                    {
                        await Task.Delay(20);
                    }
                }
                catch (TaskCanceledException)
                {
                    return;
                }
                catch (Exception exception)
                {
                    SendLogMessage("MessageReader error: " + exception, LogMessageType.Error);
                }
            }
        }

19 Source : GateIoServer.cs
with Apache License 2.0
from AlexWan

private void MessageReader(CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                try
                {
                    if (!_queueMessagesReceivedFromExchange.IsEmpty)
                    {
                        string mes;

                        if (_queueMessagesReceivedFromExchange.TryDequeue(out mes))
                        {
                            if (mes.StartsWith("{\"error"))
                            {
                                continue;
                            }

                            var jt = JToken.Parse(mes);

                            var channel = jt.SelectToken("method").ToString();

                            if (channel == "trades.update")
                            {
                                foreach (var trade in _tradesCreator.Create(mes))
                                {
                                    OnTradeEvent(trade);
                                }
                            }
                            else if (channel == "depth.update")
                            {
                                OnMarketDepthEvent(_marketDepthCreator.Create(mes));
                            }
                            else if (channel == "balance.update")
                            {
                                OnPortfolioEvent(_portfolioCreator.UpdatePortfolio(mes));
                            }
                            else if (channel == "order.update")
                            {
                                OnOrderEvent(_orderCreator.Create(mes));
                            }
                        }
                    }
                    else
                    {
                        Thread.Sleep(20);
                    }
                }
                catch (TaskCanceledException)
                {
                    return;
                }
                catch (Exception exception)
                {
                    SendLogMessage("MessageReader error: " + exception, LogMessageType.Error);
                }
            }
        }

19 Source : GateIoServer.cs
with Apache License 2.0
from AlexWan

public override void SendOrder(Order order)
        {
            StringBuilder builder = new StringBuilder();

            builder.AppendFormat("{0}={1}", "currencyPair", order.SecurityNameCode.ToLower());
            builder.Append("&");
            builder.AppendFormat("{0}={1}", "rate", order.Price);
            builder.Append("&");
            builder.AppendFormat("{0}={1}", "amount", order.Volume);
            builder.Append("&");
            builder.AppendFormat("{0}={1}", "text", "t-" + order.NumberUser);

            var headers = new Dictionary<string, string>();

            headers.Add("Key", _publicKey);
            headers.Add("Sign", SingRestData(_secretKey, builder.ToString()));

            var data = Encoding.UTF8.GetBytes(builder.ToString());

            var endPoint = order.Side == Side.Buy ? "buy" : "sell";

            var result = _restChannel.SendPostQuery(PrivateRestUri, endPoint, data, headers);

            var jt = JToken.Parse(result);
            var responseData = jt["result"].ToString();

            if (responseData == "false")
            {
                order.State = OrderStateType.Fail;
                OnOrderEvent(order);
                SendLogMessage("Error placing order: you have insufficient funds", LogMessageType.Trade);
            }
        }

19 Source : GateIoServer.cs
with Apache License 2.0
from AlexWan

public override void CancelOrder(Order order)
        {
            StringBuilder builder = new StringBuilder();

            builder.AppendFormat("{0}={1}", "orderNumber", order.NumberMarket);
            builder.Append("&");
            builder.AppendFormat("{0}={1}", "currencyPair", order.SecurityNameCode.ToLower());
            builder.Append("&");
            builder.AppendFormat("{0}={1}", "text", "t-" + order.NumberUser);

            var headers = new Dictionary<string, string>();

            headers.Add("Key", _publicKey);
            headers.Add("Sign", SingRestData(_secretKey, builder.ToString()));

            var data = Encoding.UTF8.GetBytes(builder.ToString());

            var endPoint = "cancelOrder";

            var result = _restChannel.SendPostQuery(PrivateRestUri, endPoint, data, headers);

            var jt = JToken.Parse(result);
            var responseData = jt["result"].ToString();

            if (responseData == "false")
            {
                SendLogMessage(jt["message"].ToString(), LogMessageType.Error);
            }
        }

19 Source : KrakenSocket.cs
with Apache License 2.0
from AlexWan

private async Task StartListening(CancellationToken cancellationToken = default)
#pragma warning restore S3241 // Methods should not return values that are never used
        {
            try
            {
                while (webSocket.State == WebSocketState.Open)
                {
                   // logger?.LogDebug("Waiting for new message");
                    var message = await ReadNextMessage(cancellationToken);

                   // logger?.LogDebug("Received new message from websocket");
                   // logger?.LogTrace("Received: '{message}'", message);

                    string eventString = null;
                    int? channelId = null;

                    if (!string.IsNullOrEmpty(message))
                    {
                        var token = JToken.Parse(message);
                        switch (token)
                        {
                            case JObject _:
                                var messageObj = JObject.Parse(message);
                                eventString = (string)messageObj.GetValue("event");
                                break;

                            case JArray arrayToken:
                                // Data / private messages
                                if (int.TryParse(arrayToken.First.ToString(), out var localChannelId))
                                {
                                    channelId = localChannelId;
                                }

                                eventString = channelId != null ? "data" : "private";
                                break;
                        }

                        InvokeDataReceived(new KrakenMessageEventArgs(eventString, message, channelId));
                    }
                }
            }
            catch (Exception ex)
            {
               // logger?.LogError(ex, "Error while listening or reading new messages from WebSocket");
                // TODO: Disconnected-Event
                throw;
            }
            finally
            {
              //  logger?.LogInformation("Closing WebSocket");
                webSocket.Dispose();
            }
        }

19 Source : FTXServer.cs
with Apache License 2.0
from AlexWan

private void HandleErrorMessage(JToken response)
        {
            var errorMessage = response.SelectToken("msg").ToString();
            if(errorMessage == "Already subscribed")
            {
                return;
            }
            SendLogMessage(errorMessage, LogMessageType.Error);
        }

19 Source : FTXServer.cs
with Apache License 2.0
from AlexWan

private void HandleSubscribedMessage(JToken response)
        {
            var channel = response.SelectToken("channel").ToString();
            switch (channel)
            {
                case "trades":
                    var securityName = response.SelectToken("market").ToString();
                    _subscribedSecurities.Add(securityName);
                    break;
                case "fills":
                    _isPortfolioSubscribed = true;
                    break;
                default:
                    break;
            }      
        }

19 Source : FTXServer.cs
with Apache License 2.0
from AlexWan

private void HandleUnsubscribedMessage(JToken response)
        {
            var channel = response.SelectToken("channel").ToString();
            switch (channel)
            {
                case "trades":
                    var securityName = response.SelectToken("market").ToString();
                    _subscribedSecurities.Remove(securityName);
                    break;
                case "fills":
                    _isPortfolioSubscribed = false;
                    break;
                default:
                    break;
            }
        }

19 Source : FTXServer.cs
with Apache License 2.0
from AlexWan

private void HandleInfoMessage(JToken response)
        {
            SendLogMessage(response.ToString(), LogMessageType.NoName);
        }

19 Source : FTXServer.cs
with Apache License 2.0
from AlexWan

private void HandlePartialMessage(JToken response)
        {
            var channel = response.SelectToken("channel").ToString();
            var data = response.SelectToken("data");
            var securityName = response.SelectToken("market").ToString();
            switch (channel)
            {
                case "orderbook":
                    var marketDepth = _marketDepthCreator.Create(data);
                    marketDepth.SecurityNameCode = securityName;
                    if (_securityMarketDepths.ContainsKey(marketDepth.SecurityNameCode))
                    {
                        _securityMarketDepths[marketDepth.SecurityNameCode] = marketDepth;
                    }
                    else
                    {
                        _securityMarketDepths.Add(marketDepth.SecurityNameCode, marketDepth);
                    }
                    OnMarketDepthEvent(marketDepth);
                    break;
                case "trades":
                    break;
                case "ticker":
                    break;
                case "fills":
                    break;
                case "orders":
                    break;
                default:
                    SendLogMessage("Unhandeled channel :" + channel, LogMessageType.System);
                    break;
            }
        }

19 Source : FTXServer.cs
with Apache License 2.0
from AlexWan

private void HandleUpdateMessage(JToken response)
        {
            var channel = response.SelectToken("channel").ToString();
            var data = response.SelectToken("data");
            var securityName = response.SelectToken("market")?.ToString();
            switch (channel)
            {
                case "orderbook":
                    HandleUpdateMarketDepthMessage(data, securityName);
                    break;
                case "trades":
                    var trades = _tradesCreator.Create(data, securityName);
                    foreach(var trade in trades)
                    {
                        OnTradeEvent(trade);
                    }
                    break;
                case "ticker":
                    break;
                case "fills":
                    OnMyTradeEvent(_tradesCreator.CreateMyTrade(data));
                    break;
                case "orders":
                    HandleUpdateOrderMessage(data);
                    break;
                default:
                    SendLogMessage("Unhandeled channel :" + channel, LogMessageType.System);
                    break;
            }
        }

19 Source : GateMarketDepthCreator.cs
with Apache License 2.0
from AlexWan

public MarketDepth Create(string data)
        {
            var jt = JObject.Parse(data);

            var quotes = (JArray)jt["params"];

            if (quotes[0].ToString() == "True")
            {
                return CreateNew(quotes);
            }

            return Update(quotes);
        }

19 Source : GateMarketDepthCreator.cs
with Apache License 2.0
from AlexWan

private MarketDepth CreateNew(JArray quotes)
        {
            var newDepth = new MarketDepth();

            newDepth.Time = DateTime.UtcNow;

            newDepth.SecurityNameCode = quotes[2].ToString();

            var needDepth = _allDepths.Find(d => d.SecurityNameCode == newDepth.SecurityNameCode);

            if (needDepth != null)
            {
                _allDepths.Remove(needDepth);
            }

            var bids = quotes[1]["bids"].Children();
            var asks = quotes[1]["asks"].Children();

            foreach (var bid in bids)
            {
                newDepth.Bids.Add(new MarketDepthLevel()
                {
                    Price = bid[0].Value<decimal>(),
                    Bid = bid[1].Value<decimal>(),
                });
            }

            foreach (var ask in asks)
            {
                newDepth.Asks.Add(new MarketDepthLevel()
                {
                    Price = ask[0].Value<decimal>(),
                    Ask = ask[1].Value<decimal>(),
                });
            }

            _allDepths.Add(newDepth);

            return newDepth.GetCopy();
        }

19 Source : GateMarketDepthCreator.cs
with Apache License 2.0
from AlexWan

private MarketDepth Update(JArray quotes)
        {
            var needDepth = _allDepths.Find(d => d.SecurityNameCode == quotes[2].ToString());

            if (needDepth == null)
            {
                throw new ArgumentNullException("GateIo: MarketDepth for updates not found");
            }

            if (quotes[1]["bids"] != null)
            {
                var bidsLevels = quotes[1]["bids"].Children();

                foreach (var bidLevel in bidsLevels)
                {
                    decimal price = bidLevel[0].Value<decimal>();
                    decimal bid = bidLevel[1].Value<decimal>();

                    if (bid != 0)
                    {
                        InsertLevel(price, bid, Side.Buy, needDepth);
                    }
                    else
                    {
                        DeleteLevel(price, Side.Buy, needDepth);
                    }
                }
                SortBids(needDepth.Bids);
            }

            if (quotes[1]["asks"] != null)
            {
                var asksLevels = quotes[1]["asks"].Children();

                foreach (var askLevel in asksLevels)
                {
                    decimal price = askLevel[0].Value<decimal>();
                    decimal ask = askLevel[1].Value<decimal>();

                    if (ask != 0)
                    {
                        InsertLevel(price, ask, Side.Sell, needDepth);
                    }
                    else
                    {
                        DeleteLevel(price, Side.Sell, needDepth);
                    }
                }
                SortAsks(needDepth.Asks);
            }

            return needDepth.GetCopy();
        }

19 Source : GateTradesCreator.cs
with Apache License 2.0
from AlexWan

public List<Trade> Create(string data)
        {
            var trades = new List<Trade>();

            var jt = JObject.Parse(data);

            var tradesData = (JArray)jt["params"];
            
            foreach (var trade in tradesData[1])
            {
                var security = tradesData[0].ToString();

                var time = trade["time"].Value<long>();

                var newTrade = new Trade();

                newTrade.Time = TimeManager.GetDateTimeFromTimeStampSeconds(time);
                newTrade.SecurityNameCode = security;
                newTrade.Price = trade["price"].Value<decimal>();
                newTrade.Id = trade["id"].ToString();
                newTrade.Side = trade["type"].ToString() == "sell" ? Side.Sell : Side.Buy;
                newTrade.Volume = trade["amount"].Value<decimal>();

                trades.Add(newTrade);
            }

            return trades;
        }

19 Source : TinkoffClient.cs
with Apache License 2.0
from AlexWan

public void ExecuteOrder(Order order)
        {

            lock (_lockOrder)
            {
                try
                {
                    if (IsConnected == false)
                    {
                        order.State = OrderStateType.Fail;

                        if (MyOrderEvent != null)
                        {
                            MyOrderEvent(order);
                        }

                        return;
                    }


                    string request = "";

                    Dictionary<string, string> param = new Dictionary<string, string>();

                    param.Add("lots", order.Volume.ToString());
                    param.Add("operation", order.Side.ToString());
                    param.Add("price", order.Price.ToString());

                    // curl - X POST "https://api-invest.tinkoff.ru/openapi/orders/limit-order?figi=BBG004730N88" -
                    // H "accept: application/json" - H "Authorization: Bearer t.ZmEaoirPe5unR6Cw0o7YSq-Hl4lCkGES-0XgZmOg9XGl_Ds6OeAzdS9P-x1lRmQjzu7Ol6cMTgN-QUv9ISvyGQ"
                    // - 
                    //H "Content-Type: application/json" - d "{\"lots\":1,\"operation\":\"Buy\",\"price\":230}"

                    Security security = _allSecurities.Find(sec => sec.Name == order.SecurityNameCode);

                    if (security == null)
                    {
                        return;
                    }

                    string url = _url + "orders/limit-order?figi=" + security.NameId;

                    var jsonCurrency = ApiQuery(url, "POST", param);


                    if (jsonCurrency == null)
                    {
                        order.State = OrderStateType.Fail;


                        if (MyOrderEvent != null)
                        {
                            MyOrderEvent(order);
                        }

                        return;
                    }

                    var jorder = JToken.Parse(jsonCurrency).SelectToken("payload");

                    order.NumberMarket = jorder.SelectToken("orderId").ToString();
                    //order.NumberUser = Convert.ToInt32(Convert.ToInt64(order.NumberMarket) - 100000000);
                    order.State = OrderStateType.Activ;
                    order.TimeCallBack = DateTime.Now;


                    if (MyOrderEvent != null)
                    {
                        MyOrderEvent(order);
                    }

                }
                catch (Exception ex)
                {
                    SendLogMessage(ex.ToString(), LogMessageType.Error);
                }
            }
        }

19 Source : ZbMarketDepthCreator.cs
with Apache License 2.0
from AlexWan

public MarketDepth Create(string data)
        {
            var jt = JToken.Parse(data);

            var time = jt[TimePath].ToString();

            var newDepth = new MarketDepth();

            newDepth.Time = TimeManager.GetDateTimeFromTimeStampSeconds(Convert.ToInt64(time));

            newDepth.SecurityNameCode = jt[NamePath].ToString().Split('_')[0];

            var bids = jt.SelectTokens(BidsPath).Children();

            var asks = jt.SelectTokens(AsksPath).Children();

            foreach (var bid in bids)
            {
                newDepth.Bids.Add(new MarketDepthLevel()
                {
                    Price = bid[0].Value<decimal>(),
                    Bid = bid[1].Value<decimal>(),
                });
            }

            for (int i = asks.Count() -1; i> 0 ; i--)
            {
                JToken ask = asks.ElementAt(i);
                newDepth.Asks.Add(new MarketDepthLevel()
                {
                    Price = ask[0].Value<decimal>(),
                    Ask = ask[1].Value<decimal>(),
                });
            }

            return newDepth;
        }

19 Source : ZbTradesCreator.cs
with Apache License 2.0
from AlexWan

public List<Trade> Create(string data)
        {
            var trades = new List<Trade>();
            var jt = JToken.Parse(data);
            var tradesData = jt.SelectTokens(DataPath).Children();
            var security = jt[NamePath].ToString().Split('_')[0];

            foreach (var trade in tradesData)
            {
                var time = trade[TimePath].ToString();

                var newTrade = new Trade();

                newTrade.Time = TimeManager.GetDateTimeFromTimeStampSeconds(Convert.ToInt64(time));
                newTrade.SecurityNameCode = security;
                newTrade.Price = trade[PricePath].Value<decimal>();
                newTrade.Id = trade[IdPath].ToString();
                newTrade.Side = trade[DirectionPath].ToString() == "sell" ? Side.Sell : Side.Buy;
                newTrade.Volume = trade[VolumePath].Value<decimal>();

                trades.Add(newTrade);
            }

            return trades;
        }

19 Source : KeyBinding.cs
with GNU General Public License v2.0
from AmanoTooko

public static void LoadConfig()
        {
            var settingArrayList = Settings.Default.KeyBinding37;

            if (Settings.Default.IsEightKeyLayout) settingArrayList = Settings.Default.KeyBinding13;
            var settingKeyArrayList = Settings.Default.CtrlKeyBinding;
            if (settingArrayList != null)
                for (var i = 0; i < settingArrayList.Count; i++)
                    _keymap[i + 48] = (int) settingArrayList[i];

            if (settingKeyArrayList != null)
            {
                _ctrKeyMap["OctaveLower"] = (Keys)settingKeyArrayList[0];
                _ctrKeyMap["OctaveHigher"] = (Keys)settingKeyArrayList[1];
            }


            
            var tmpArraylist = JsonConvert.DeserializeObject<ArrayList>(Settings.Default.HotKeyBinding);
            hotkeyArrayList = new ArrayList();
            foreach (JObject j in tmpArraylist)
                hotkeyArrayList.Add(new GlobalHotKey(j["Name"].ToString(), (Modifiers) j["Modifiers"].Value<int>(),
                    (Keys) j["Key"].Value<int>(), j["Enabled"].Value<bool>()));
            
        }

19 Source : NgItemWizard.cs
with MIT License
from andfomin

private static bool? MergePackageJsonFiles(string projectDirectory)
        {
            const string ScriptsName = "scripts";
            const string DependenciesName = "dependencies";
            const string DevDependenciesName = "devDependencies";
            const string OldNameSuffix = "_old";

            var filePath = Path.Combine(projectDirectory, NgWizardHelper.PackageJsonFileName);
            var oldFilePath = Path.Combine(projectDirectory, NgWizardHelper.PackageJsonOldFileName);

            if (File.Exists(oldFilePath))
            {
                if (!File.Exists(filePath))
                {
                    return false;
                }
            }
            else
            {
                return (bool?)null;
            }

            try
            {
                var oldObj = JObject.Parse(File.ReadAllText(oldFilePath));
                var newObj = JObject.Parse(File.ReadAllText(filePath));

                // We will give a higher priority in the three main sections to Ng, but keep the metadata properties from the old file.
                var resultObj = new JObject(oldObj);
                // The argument's content (i.e. newObj) wins over the "this" file (i.e. result).
                resultObj.Merge(newObj);

                // Clone the old content and delete the three main sections. Leave the metadata properties intact.
                var oObj = new JObject(oldObj);

                var propScr = oObj.Property(ScriptsName);
                if (propScr != null)
                {
                    propScr.Remove();
                }
                var propDep = oObj.Property(DependenciesName);
                if (propDep != null)
                {
                    propDep.Remove();
                }
                var propDev = oObj.Property(DevDependenciesName);
                if (propDev != null)
                {
                    propDev.Remove();
                }

                // Restore the old metadata properties.
                resultObj.Merge(oObj);

                // Add the three main sections from the old file for reference.
                var oScr = oldObj[ScriptsName];
                var oDep = oldObj[DependenciesName];
                var oDev = oldObj[DevDependenciesName];

                resultObj.Property(ScriptsName).AddAfterSelf(new JProperty(ScriptsName + OldNameSuffix, oScr ?? new JObject()));
                resultObj.Property(DependenciesName).AddAfterSelf(new JProperty(DependenciesName + OldNameSuffix, oDep ?? new JObject()));
                resultObj.Property(DevDependenciesName).AddAfterSelf(new JProperty(DevDependenciesName + OldNameSuffix, oDev ?? new JObject()));

                NgWizardHelper.RewriteFile(filePath, resultObj.ToString());
                return true;
            }
            catch (Exception)
            {
            }
            return false;
        }

19 Source : NgItemWizard.cs
with MIT License
from andfomin

private bool ModifyAngularJsonFile(string projectDirectory, string jsonFileName, string projectName)
        {
            const string BaseHrefPropertyName = "baseHref";
            const string BaseHrefApi = "/";
            const string BaseHrefMvc = "/ng/";

            var projectIsMvc = Directory.Exists(Path.Combine(projectDirectory, "Views"));
            var projectIsRazorPages = Directory.Exists(Path.Combine(projectDirectory, "Pages"));
            var baseHrefPropertyValue = (projectIsMvc || projectIsRazorPages) ? BaseHrefMvc : BaseHrefApi;

            var filePath = Path.Combine(projectDirectory, jsonFileName);
            if (File.Exists(filePath))
            {
                var rootObj = JObject.Parse(File.ReadAllText(filePath));

                var parentObj = FindInsertPlace2(rootObj, projectName);
                if (parentObj != null)
                {
                    if (parentObj[BaseHrefPropertyName] == null)
                    {
                        var baseHrefProperty = new JProperty(BaseHrefPropertyName, baseHrefPropertyValue);
                        parentObj.Add(baseHrefProperty);

                        NgWizardHelper.RewriteFile(filePath, rootObj.ToString());
                        return true;
                    }
                }

            }
            return false;
        }

19 Source : Main.cs
with GNU Lesser General Public License v3.0
from andisturber

public static Location getLocation(string url)
        {
            ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
            ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;

            string URL = url;
            System.Net.WebClient myWebClient = new System.Net.WebClient();
            myWebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 133; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CIBA; InfoPath.2)");
            byte[] myDataBuffer = myWebClient.DownloadData(URL);
            string SourceCode = Encoding.GetEncoding("utf-8").GetString(myDataBuffer);
            Debug.WriteLine("返回值:" + SourceCode);
            Location Location = new Location();
            var rb = JObject.Parse(SourceCode);
            var result = JObject.Parse(rb["result"].ToString().Replace("[", "").Replace("]", ""));
            Location.Lareplacedude = Convert.ToDouble(result["lat"].ToString());
            Location.Longitude = Convert.ToDouble(result["lng"].ToString());
            Debug.WriteLine("经度:" + result["lat"].ToString());

            return Location;
        }

19 Source : NgItemWizard.cs
with MIT License
from andfomin

private bool ModifyAngularCliJsonFile(string projectDirectory)
        {
            const string BaseHrefPropertyName = "baseHref";
            const string BaseHrefApi = "/";
            const string BaseHrefMvc = "/ng/";

            var projectIsMvc = Directory.Exists(Path.Combine(projectDirectory, "Views"));
            var projectIsRazorPages = Directory.Exists(Path.Combine(projectDirectory, "Pages"));
            var baseHrefPropertyValue = (projectIsMvc || projectIsRazorPages) ? BaseHrefMvc : BaseHrefApi;

            var filePath = Path.Combine(projectDirectory, NgWizardHelper.AngularCliJsonFileName);
            if (File.Exists(filePath))
            {
                var rootObj = JObject.Parse(File.ReadAllText(filePath));
                var apps = (JArray)rootObj["apps"];
                if ((apps != null) && apps.Any())
                {
                    var app = (JObject)apps[0];
                    if (app[BaseHrefPropertyName] == null)
                    {
                        var knownProperty = app.Property("outDir") ?? app.Property("root");
                        if (knownProperty != null)
                        {
                            var baseHrefProperty = new JProperty(BaseHrefPropertyName, baseHrefPropertyValue);
                            knownProperty.AddAfterSelf(baseHrefProperty);

                            NgWizardHelper.RewriteFile(filePath, rootObj.ToString());
                            return true;
                        }
                    }
                }
            }
            return false;
        }

19 Source : Anki.cs
with MIT License
from AnkiTools

private void AddFields(JObject models, List<double> mids)
        {
            var regex = new Regex("{{hint:(.*?)}}|{{type:(.*?)}}|{{(.*?)}}");

            foreach (var mid in mids)
            {
                var qfmt = models["" + mid]["tmpls"].First["qfmt"].ToString().Replace("\"", "");
                var afmt = models["" + mid]["tmpls"].First["afmt"].ToString();
                var css = models["" + mid]["css"].ToString();

                afmt = afmt.Replace("{{FrontSide}}", qfmt);

                var matches = regex.Matches(afmt);
                FieldList fields = new FieldList();

                foreach (Match match in matches)
                {
                    if (match.Value.Contains("type:") || match.Value.Contains("hint:"))
                        continue;

                    var value = match.Value;
                    var field = new Field(value.Replace("{{", "").Replace("}}", ""));

                    fields.Add(field);
                }

                _infoPerMid.Add("" + mid, new Info(afmt.Replace("\n", "\\n"), css.Replace("\n", "\\n"), fields));
            }
        }

19 Source : FlowHelper.cs
with MIT License
from arafattehsin

public static async Task<Customer> GetFlowOutput(string userId)
        {
            using (HttpClient httpClient = new HttpClient())
            {
                try
                {
                    httpClient.Timeout = new TimeSpan(0, 2, 0);  //2 minutes

                    // Create a JSON object
                    JObject user = new JObject();
                    user.Add("userId", userId);

                    // Get response from Microsoft Flow
                    var stringContent = new StringContent(user.ToString(), Encoding.UTF8, "application/json");
                    HttpResponseMessage response = await httpClient.PostAsync("https://prod-123.westus.logic.azure.com:443/workflows/e3a77fa66f25479d9c9633ed5c579946/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=gKmbRSPO1BzvPUc8RxRZtcttqSQErPXDbB8bK28PXO0", stringContent);
                    var array = response.Content.ReadreplacedtringAsync().Result.Split('|');

                    // Customer 
                    return new Customer()
                    {
                        Name = array[0],
                        Address = array[1],
                        MobileNumber = array[2]
                    };                   
                }
                catch(Exception ex)
                {
                    throw ex;
                }
            }
             
        }

19 Source : D365WebAPIHelper.cs
with MIT License
from arafattehsin

public async static Task<string> GenerateLead(Prospect prospect, CRMCredentials crmUser)
        {
            HttpMessageHandler messageHandler = null;
            Version webAPIVersion = new Version(9, 0);

            //One message handler for OAuth authentication, and the other for Windows integrated 
            // authentication.  (replacedumes that HTTPS protocol only used for CRM Online.)
            if (crmUser.ServiceUrl.StartsWith("https://"))
            {
                messageHandler = new OAuthMessageHandler(crmUser.ServiceUrl, crmUser.ClientID, crmUser.RedirectUrl, crmUser.AuthpointEnd, crmUser.Key,
                         new HttpClientHandler());
            }

            try
            {
                //Create an HTTP client to send a request message to the CRM Web service.
                using (HttpClient httpClient = new HttpClient(messageHandler))
                {
                    //Specify the Web API address of the service and the period of time each request 
                    // has to execute.
                    httpClient.BaseAddress = new Uri(crmUser.ServiceUrl);
                    httpClient.Timeout = new TimeSpan(0, 2, 0);  //2 minutes

                    httpClient.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");
                    httpClient.DefaultRequestHeaders.Add("OData-Version", "4.0");
                    httpClient.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));

                    // Get the current userId of the service account (owner incase of Lead)
                    HttpResponseMessage whoAmIResponse = await httpClient.GetAsync("api/data/v9.0/WhoAmI");
                    Guid userId;
                    if (whoAmIResponse.IsSuccessStatusCode)
                    {
                        JObject jWhoAmIResponse =
                            JObject.Parse(whoAmIResponse.Content.ReadreplacedtringAsync().Result);
                        userId = (Guid)jWhoAmIResponse["UserId"];

                        // Populate the fields of prospect customer (lead)
                        JObject lead = new JObject();
                        lead.Add("subject", "Lead from the Event Bot");
                        lead.Add("lastname", prospect.Name);
                        lead.Add("mobilephone", prospect.PhoneNumber);
                        lead.Add("emailaddress1", prospect.Email);
                        lead.Add("[email protected]", $"/systemusers({userId})");

                        // Create request and response
                        HttpRequestMessage createRequest = new HttpRequestMessage(HttpMethod.Post, "api/data/v9.0/leads");
                        createRequest.Content = new StringContent(lead.ToString(), Encoding.UTF8, "application/json");
                        HttpResponseMessage createResponse = await httpClient.SendAsync(createRequest);

                        // Check if the status is good to go (204)
                        if (createResponse.StatusCode == HttpStatusCode.NoContent) 
                        {
                            return Helpers.Common.GenerateReferenceID(6);
                        }
                        else
                        {
                            return $"Failed to register {createResponse.StatusCode}";
                        }
                    }
                    else
                        return $"Failed - {whoAmIResponse.StatusCode}";
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

19 Source : FlowHelper.cs
with MIT License
from arafattehsin

public static async Task<Customer> GetFlowOutput(string userId)
        {
            using (HttpClient httpClient = new HttpClient())
            {
                try
                {
                    httpClient.Timeout = new TimeSpan(0, 2, 0);  //2 minutes

                    // Create a JSON object
                    JObject user = new JObject();
                    user.Add("userId", userId);

                    // Get response from Microsoft Flow
                    var stringContent = new StringContent(user.ToString(), Encoding.UTF8, "application/json");
                    HttpResponseMessage response = await httpClient.PostAsync("https://prod-81.westus.logic.azure.com:443/workflows/a4c85f0fb48f4e3e94ed88c4271afdce/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=e1Pw3CXokS9J4Gk8MhHMaWgth1AlDHRcNYxOdky9DE0", stringContent);
                    var array = response.Content.ReadreplacedtringAsync().Result.Split('|');

                    // Customer 
                    return new Customer()
                    {
                        Name = array[0],
                        Address = array[1],
                        MobileNumber = array[2]
                    };                   
                }
                catch(Exception ex)
                {
                    throw ex;
                }
            }
             
        }

19 Source : FlowHelper.cs
with MIT License
from arafattehsin

public static async Task<Customer> GetFlowOutput(string userId)
        {
            using (HttpClient httpClient = new HttpClient())
            {
                try
                {
                    httpClient.Timeout = new TimeSpan(0, 2, 0);  //2 minutes

                    // Create a JSON object
                    JObject user = new JObject();
                    user.Add("userId", userId);

                    // Get response from Microsoft Flow
                    var stringContent = new StringContent(user.ToString(), Encoding.UTF8, "application/json");
                    HttpResponseMessage response = await httpClient.PostAsync("https://prod-03.westus.logic.azure.com:443/workflows/f446abefc3734bc589de93712347d6e5/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=aS5_STOxFTMx2hND4zLMQSqZDNyFqlZse0t5VgguCMM", stringContent);
                    var array = response.Content.ReadreplacedtringAsync().Result.Split('|');

                    // Customer 
                    return new Customer()
                    {
                        Name = array[0],
                        Address = array[1],
                        MobileNumber = array[2]
                    };                   
                }
                catch(Exception ex)
                {
                    throw ex;
                }
            }
             
        }

19 Source : C2ParsingService.cs
with GNU General Public License v3.0
from armandoalonso

public C2Addon Parse(string json)
        {
            var c2addon = new C2Addon();
            dynamic data = JObject.Parse(json);

            //settings
            var settings = data["settings"];
            foreach (JProperty prop in settings)
            {
                //handle array
                if (prop.Name == "flags")
                {
                    var sb = new StringBuilder();
                    foreach (var val in prop.Value)
                    {
                        sb.Append($" {val} ");
                    }
                    c2addon.Properties.Add(prop.Name,sb.ToString());
                    continue;
                }

                c2addon.Properties.Add(prop.Name, prop.Value.ToString());
            }

            //properties
            var props = data["properties"];
            foreach (var p in props)
            {
                var property = new C2Property();

                property.Type = p["flags"].ToString();
                property.Name = p["key"].ToString();
                property.Value = p["initial_str"]?.ToString() ?? string.Empty;
                property.Description = p["description"].ToString();
                var flags = p["params"];
                var fList = new List<string>();
                foreach (var flag in flags)
                {
                    fList.Add(flag);
                }
                property.Params = string.Join("|", fList);
                property.Readonly = p["read_only"] != null ? p["read_only"].ToString().ToLower() : "false";
            }

            //actions
            var actions = data["actions"];
            c2addon.Actions = new List<C2Ace>();
            foreach (JObject act in actions)
            {
                var ace = new C2Ace
                {
                    Id = act["id"].ToString(),
                    ListName = act["list_name"].ToString(),
                    Category = act["category"].ToString(),
                    DisplayString = act["display_string"].ToString(),
                    Description = act["description"].ToString(),
                    ScriptName = act["script_name"].ToString()
                };

                //get flags
                var sb = new StringBuilder();
                foreach (var val in act["flags"])
                {
                    sb.Append($" {val} ");
                }
                ace.Flags = sb.ToString();

                //params
                foreach (var param in act["params"])
                {
                    var aceParam = new C2AceParam
                    {
                        Text = param["name"]?.ToString(),
                        Description = param["description"]?.ToString(),
                        DefaultValue = param["initial"]?.ToString(),
                        Script = param["caller"]?.ToString()
                    };

                    if (param["caller"]?.ToString() == "AddComboParam")
                    {
                        aceParam.ComboItems = new List<string>();
                        foreach (var val in param["options"])
                        {
                            aceParam.ComboItems.Add(val["text"].ToString());
                        }
                    }

                    ace.Params.Add(aceParam);
                    c2addon.Actions.Add(ace);
                }

            }

            //conditions
            var conditions = data["conditions"];
            c2addon.Conditions = new List<C2Ace>();
            foreach (JObject cnd in conditions)
            {
                var ace = new C2Ace
                {
                    Id = cnd["id"].ToString(),
                    ListName = cnd["list_name"].ToString(),
                    Category = cnd["category"].ToString(),
                    DisplayString = cnd["display_string"].ToString(),
                    Description = cnd["description"].ToString(),
                    ScriptName = cnd["script_name"].ToString()
                };

                //get flags
                var sb = new StringBuilder();
                foreach (var val in cnd["flags"])
                {
                    sb.Append($" {val} ");
                }
                ace.Flags = sb.ToString();

                //params
                foreach (var param in cnd["params"])
                {
                    var aceParam = new C2AceParam
                    {
                        Text = param["name"]?.ToString(),
                        Description = param["description"]?.ToString(),
                        DefaultValue = param["initial"]?.ToString(),
                        Script = param["caller"]?.ToString()
                    };

                    if (param["caller"]?.ToString() == "AddComboParam")
                    {
                        aceParam.ComboItems = new List<string>();
                        foreach (var val in param["options"])
                        {
                            aceParam.ComboItems.Add(val["text"].ToString());
                        }
                    }

                    ace.Params.Add(aceParam);
                }
                c2addon.Conditions.Add(ace);
            }

            //expressions
            var expressions = data["expressions"];
            c2addon.Expressions = new List<C2Ace>();
            foreach (JObject exp in expressions)
            {
                var ace = new C2Ace
                {
                    Id = exp["id"].ToString(),
                    ListName = exp["list_name"].ToString(),
                    Category = exp["category"].ToString(),
                    Description = exp["description"].ToString(),
                    ScriptName = exp["expression_name"].ToString(),                 
                };

                //get flags
                var sb = new StringBuilder();
                foreach (var val in exp["flags"])
                {
                    sb.Append($" {val} ");
                }
                ace.Flags = sb.ToString();

                //params
                foreach (var param in exp["params"])
                {
                    var aceParam = new C2AceParam
                    {
                        Text = param["name"]?.ToString(),
                        Description = param["description"]?.ToString(),
                        DefaultValue = param["initial"]?.ToString(),
                        Script = param["caller"]?.ToString()
                    };

                    if (param["caller"]?.ToString() == "AddComboParam")
                    {
                        aceParam.ComboItems = new List<string>();
                        foreach (var val in param["options"])
                        {
                            aceParam.ComboItems.Add(val["text"].ToString());
                        }
                    }

                    ace.Params.Add(aceParam);
                }

                c2addon.Expressions.Add(ace);
            }

            return c2addon;
        }

19 Source : C3AddonImporter.cs
with GNU General Public License v3.0
from armandoalonso

public async Task<C3Addon> Import(string path)
        {
            WindowManager.ShowLoadingOverlay(true);
            try
            {
                return await Task.Run(() =>
                {
                    var fi = new FileInfo(path);
                    var tmpPath = OptionsManager.CurrentOptions.DataPath + "\\tmp_c3";
                    if (Directory.Exists(tmpPath)) Directory.Delete(tmpPath, true);

                    //unzip c3addon to temp location
                    ZipFile.ExtractToDirectory(path, tmpPath);

                    var addon = JObject.Parse(File.ReadAllText(Path.Combine(tmpPath, "addon.json")));
                    string type = addon["type"].ToString();
                    string id = addon["id"].ToString();

                    //todo: handle mixed c3addon with only c2runtime
                    bool c2Only = !File.Exists(Path.Combine(tmpPath, "c3runtime", $"{type}.js"));


                    if (type != "effect" && !c2Only)
                    {
                        string pluginEdit, pluginRun;

                        pluginEdit = File.ReadAllText(Path.Combine(tmpPath, $"{type}.js"));
                        pluginRun = File.ReadAllText(Path.Combine(tmpPath, "c3runtime", $"{type}.js"));
                        string typeEdit = File.ReadAllText(Path.Combine(tmpPath, $"type.js"));
                        string typeRun = File.ReadAllText(Path.Combine(tmpPath, "c3runtime", $"type.js"));
                        string instanceEdit = File.ReadAllText(Path.Combine(tmpPath, $"instance.js"));
                        string instanceRun = File.ReadAllText(Path.Combine(tmpPath, "c3runtime", $"instance.js"));
                        string c2runtime = null;

                        if (Directory.Exists(Path.Combine(tmpPath, "c2runtime")))
                        {
                            c2runtime = File.ReadAllText(Path.Combine(tmpPath, "c2runtime", "runtime.js"));
                        }

                        PluginType pluginType = PluginType.SingleGlobalPlugin;
                        string pluginCat = "other";
                        switch (type)
                        {
                            case "plugin":
                                pluginType = pluginEdit.Contains("SetPluginType(\"world\")")
                                    ? PluginType.DrawingPlugin
                                    : PluginType.SingleGlobalPlugin;
                                pluginCat = Regex.Match(pluginEdit, @"PLUGIN_CATEGORY = ""(?<cat>).*""").Groups["cat"]
                                    .Value;
                                break;
                            case "behavior":
                                pluginType = PluginType.Behavior;
                                pluginCat = Regex.Match(pluginEdit, @"BEHAVIOR_CATEGORY = ""(?<cat>.*)""").Groups["cat"]
                                    .Value;
                                break;
                        }

                        if (string.IsNullOrWhiteSpace(pluginCat)) pluginCat = "other";

                        var ace = JObject.Parse(File.ReadAllText(Path.Combine(tmpPath, "aces.json")));
                        var lang = JObject.Parse(File.ReadAllText(Path.Combine(tmpPath, "lang", "en-US.json")))["text"][type + "s"][id.ToLower()];

                        var prop = "\"properties\": " + (string.IsNullOrWhiteSpace(lang["properties"]?.ToString()) ? "{ }" : lang["properties"]);
                        var cats = "\"aceCategories\": " + (string.IsNullOrWhiteSpace(lang["aceCategories"]?.ToString()) ? "{ }" : lang["aceCategories"]);

                        //pasre ace implementations
                        LogManager.AddImportLogMessage("EXTRACTING C3RUNTIME / ACTIONS");
                        var actFuncs = JavascriptManager.GetAllFunction(File.ReadAllText(Path.Combine(tmpPath, "c3runtime", "actions.js")));
                        LogManager.AddImportLogMessage("EXTRACTING C3RUNTIME / CONDITION");
                        var cndFuncs = JavascriptManager.GetAllFunction(File.ReadAllText(Path.Combine(tmpPath, "c3runtime", "conditions.js")));
                        LogManager.AddImportLogMessage("EXTRACTING C3RUNTIME / EXPRESSIONS");
                        var expFuncs = JavascriptManager.GetAllFunction(File.ReadAllText(Path.Combine(tmpPath, "c3runtime", "expressions.js")));

                        var actionList = new List<Models.Action>();
                        var conditionList = new List<Models.Condition>();
                        var expressionList = new List<Models.Expression>();

                        foreach (JProperty category in ace.Properties())
                        {
                            //parse actions
                            var ationJson = ace[category.Name]["actions"]?.ToString();
                            var actions = ationJson != null ? JArray.Parse(ationJson) : null;
                            if (actions != null)
                            {
                                foreach (var action in actions.Children<JObject>())
                                {
                                    var actionId = action["id"].ToString();
                                    var actionAce = action.ToString();
                                    var actionLang = $"\"{actionId}\":" + lang["actions"][actionId];
                                    var actionScript = action["scriptName"].ToString();
                                    var actionParams = string.Empty;

                                    //only needed for stub methods
                                    //if (action["params"] != null && action["params"].Children<JObject>().Any())
                                    //{
                                    //    var ep = action["params"].Children<JObject>().Select(x => x["id"].ToString());
                                    //    actionParams = string.Join(",", ep);
                                    //}

                                    actFuncs.TryGetValue(actionScript.Trim(), out var code);
                                    if (code == null)
                                    {
                                        LogManager.AddImportLogMessage($"ACTION FUNCTION DEFINITION DOES NOT EXISTS => {actionScript.Trim()}");
                                        continue;
                                    }

                                    var act = new Models.Action
                                    {
                                        Id = actionId,
                                        Category = category.Name,
                                        Ace = actionAce,
                                        Language = actionLang,
                                        //Code = $"{actionScript}({string.Join(",", actionParams)}) {{ \n}}"
                                        Code = FormatHelper.Insatnce.Javascript(code) ?? string.Empty
                                    };

                                    actionList.Add(act);
                                }
                            }

                            //parse conditions
                            var conditionJson = ace[category.Name]["conditions"]?.ToString();
                            var conditions = conditionJson != null ? JArray.Parse(conditionJson) : null;
                            if (conditions != null)
                            {
                                foreach (var condition in conditions.Children<JObject>())
                                {
                                    var conditionId = condition["id"].ToString();
                                    var conditionAce = condition.ToString();
                                    var conditionLang = $"\"{conditionId}\":" + lang["conditions"][conditionId];
                                    var conditionScript = condition["scriptName"].ToString();
                                    var conditionParams = string.Empty;

                                    //only needed for stub methods
                                    //if (condition["params"] != null && condition["params"].Children<JObject>().Any())
                                    //{
                                    //    var ep = condition["params"].Children<JObject>().Select(x => x["id"].ToString());
                                    //    conditionParams = string.Join(",", ep);
                                    //}

                                    cndFuncs.TryGetValue(conditionScript.Trim(), out var code);
                                    if (code == null)
                                    {
                                        LogManager.AddImportLogMessage($"CONDITION FUNCTION DEFINITION DOES NOT EXISTS => {conditionScript.Trim()}");
                                        continue;
                                    }
                                    var cnd = new Models.Condition()
                                    {
                                        Id = conditionId,
                                        Category = category.Name,
                                        Ace = conditionAce,
                                        Language = conditionLang,
                                        //Code = $"{conditionScript}({string.Join(",", conditionParams)}) {{ \n}}"
                                        Code = FormatHelper.Insatnce.Javascript(code) ?? string.Empty
                                    };

                                    conditionList.Add(cnd);
                                }
                            }

                            //parse expression
                            var expressionJson = ace[category.Name]["expressions"]?.ToString();
                            var expressions = expressionJson != null ? JArray.Parse(expressionJson) : null;
                            if (expressions != null)
                            {
                                foreach (var expression in expressions.Children<JObject>())
                                {
                                    var expressionId = expression["id"].ToString();
                                    var expressionAce = expression.ToString();
                                    var expressionLang = $"\"{expressionId}\":" + lang["expressions"][expressionId];
                                    var expressionScript = expression["expressionName"].ToString();
                                    var expressionParams = string.Empty;

                                    //only needed for stub methods
                                    //if (expression["params"] != null && expression["params"].Children<JObject>().Any())
                                    //{
                                    //    var ep = expression["params"].Children<JObject>().Select(x => x["id"].ToString());
                                    //    expressionParams = string.Join(",", ep);
                                    //}

                                    expFuncs.TryGetValue(expressionScript.Trim(), out var code);
                                    if (code == null)
                                    {
                                        LogManager.AddImportLogMessage($"EXPRESSION FUNCTION DEFINITION DOES NOT EXISTS => {expressionScript.Trim()}");
                                        continue;
                                    }
                                    var exp = new Models.Expression()
                                    {
                                        Id = expressionId,
                                        Category = category.Name,
                                        Ace = expressionAce,
                                        Language = expressionLang,
                                        //Code = $"{expressionScript}({expressionParams}) {{ \n}}"
                                        Code = FormatHelper.Insatnce.Javascript(expFuncs[expressionScript.Trim()]) ??
                                               string.Empty
                                    };

                                    expressionList.Add(exp);
                                }
                            }
                        }

                        var thirdPartyFiles = new List<ThirdPartyFile>();
                        var files = Regex.Matches(pluginEdit, @"filename\s?:\s?(""|')(?<file>.*)(""|')");
                        var domFilesMatches = Regex.Matches(pluginEdit, @"SetDOMSideScripts\(\[(?<file>.*)\]\)");
                        var domFileList = new List<string>();
                        var completeFileList = new HashSet<string>();

                        foreach(Match match in domFilesMatches)
                        {
                            var domScripts = match.Groups["file"].ToString().Split(',');
                            foreach(var domScript in domScripts)
                            {
                                var fn = domScript.Trim('"').Trim('\'');
                                domFileList.Add(fn);
                                completeFileList.Add(fn);
                            }
                        }

                        foreach(Match match in files)
                        {
                            var fn = match.Groups["file"].ToString();
                            completeFileList.Add(fn);
                        }

                        foreach (var fn in completeFileList)
                        {
                            var info = new FileInfo(Path.Combine(Path.Combine(tmpPath, fn)));

                            var f = new ThirdPartyFile
                            {
                                Bytes = File.ReadAllBytes(info.FullName),
                                Content = File.ReadAllText(info.FullName),
                                Extention = info.Extension,
                            };

                            switch (info.Extension)
                            {
                                case ".js":
                                    f.Content = FormatHelper.Insatnce.FixMinifiedFiles(f.Content);
                                    f.Compress = true;
                                    f.PlainText = true;
                                    break;
                                case ".html":
                                case ".css":
                                case ".txt":
                                case ".json":
                                case ".xml":
                                    f.PlainText = true;
                                    f.Compress= false;
                                    break;
                                default:
                                    f.Content = $"BINARY FILE => {f.FileName}\nBYTE LENGTH : ({f.Bytes.Length})";
                                    f.PlainText = false;
                                    f.Compress = false;
                                    break;
                            }


                            if (fn.Contains("c3runtime"))
                            {
                                f.C3Folder = true;
                                f.FileName = fn.Replace("c3runtime/", string.Empty).Trim();
                            }
                            else if (fn.Contains("c2runtime"))
                            {
                                f.C2Folder = true;
                                f.FileName = fn.Replace("c2runtime/", string.Empty).Trim();
                            }
                            else
                            {
                                f.Rootfolder = true;
                                f.FileName = fn.Replace("/", "\\").Trim();
                            }

                            foreach(var df in domFileList)
                            {
                                if(df.Contains(f.FileName))
                                {
                                    f.Domfolder = true;
                                }
                            }

                            f.PluginTemplate = TemplateHelper.ThirdPartyFile(f);

                            thirdPartyFiles.Add(f);
                        }

                        //todo: create c3addon, and map parsed data to c3addon 
                        var c3addon = new C3Addon
                        {
                            AddonId = id,
                            AddonCategory = pluginCat,
                            Author = addon["author"]?.ToString(),
                            Clreplaced = addon["name"]?.ToString()?.Replace(" ", string.Empty),
                            Company = addon["author"]?.ToString(),
                            Name = addon["name"]?.ToString(),
                            Description = addon["description"]?.ToString(),
                            AddonJson = addon.ToString(),
                            PluginRunTime = pluginRun,
                            PluginEditTime = pluginEdit,
                            TypeEditTime = typeEdit,
                            TypeRunTime = typeRun,
                            InstanceEditTime = instanceEdit,
                            InstanceRunTime = instanceRun,
                            LanguageProperties = prop,
                            LanguageCategories = cats,
                            Id = Guid.NewGuid(),
                            CreateDate = DateTime.Now,
                            LastModified = DateTime.Now,
                            Type = pluginType
                        };

                        c3addon.Actions = new Dictionary<string, Action>();
                        c3addon.Conditions = new Dictionary<string, Condition>();
                        c3addon.Expressions = new Dictionary<string, Expression>();

                        foreach (var action in actionList)
                        {
                            c3addon.Actions.Add(action.Id, action);
                        }

                        foreach (var condition in conditionList)
                        {
                            c3addon.Conditions.Add(condition.Id, condition);
                        }

                        foreach (var expression in expressionList)
                        {
                            c3addon.Expressions.Add(expression.Id, expression);
                        }

                        c3addon.IconXml = File.Exists(Path.Combine(tmpPath, "icon.svg")) ?
                            File.ReadAllText(Path.Combine(tmpPath, "icon.svg")) :
                            ResourceReader.Insatnce.GetResourceText("c3IDE.Templates.Files.icon.svg");

                        c3addon.Template = TemplateFactory.Insatnce.CreateTemplate(c3addon.Type);

                        c3addon.ThirdPartyFiles = new Dictionary<string, ThirdPartyFile>();
                        foreach (var thirdPartyFile in thirdPartyFiles)
                        {
                            c3addon.ThirdPartyFiles.Add($"{thirdPartyFile.ID}", thirdPartyFile);
                        }

                        if (!string.IsNullOrWhiteSpace(c2runtime))
                        {
                            c3addon.C2RunTime = c2runtime;
                        }

                        //regenerate addon file
                        c3addon.AddonJson = TemplateCompiler.Insatnce.CompileTemplates(c3addon.Template.AddonJson, c3addon);

                        //fixup pluginedit time (replace png iconw ith svg)
                        c3addon.PluginEditTime = Regex.Replace(c3addon.PluginEditTime, @"this._info.SetIcon\(.*\);", "this._info.SetIcon(\"icon.svg\", \"image/svg+xml\");");

                        return c3addon;
                    }
                    else if (type != "effect" && c2Only)
                    {
                        string pluginEdit;

                        pluginEdit = File.ReadAllText(Path.Combine(tmpPath, $"{type}.js"));
                        string typeEdit = File.ReadAllText(Path.Combine(tmpPath, $"type.js"));
                        string instanceEdit = File.ReadAllText(Path.Combine(tmpPath, $"instance.js"));

                        string c2runtime = null;

                        if (Directory.Exists(Path.Combine(tmpPath, "c2runtime")))
                        {
                            c2runtime = File.ReadAllText(Path.Combine(tmpPath, "c2runtime", "runtime.js"));
                        }

                        PluginType pluginType = PluginType.SingleGlobalPlugin;
                        string pluginCat = "other";
                        switch (type)
                        {
                            case "plugin":
                                pluginType = pluginEdit.Contains("SetPluginType(\"world\")")
                                    ? PluginType.DrawingPlugin
                                    : PluginType.SingleGlobalPlugin;
                                pluginCat = Regex.Match(pluginEdit, @"PLUGIN_CATEGORY = ""(?<cat>).*""").Groups["cat"]
                                    .Value;
                                break;
                            case "behavior":
                                pluginType = PluginType.Behavior;
                                pluginCat = Regex.Match(pluginEdit, @"BEHAVIOR_CATEGORY = ""(?<cat>.*)""").Groups["cat"]
                                    .Value;
                                break;
                        }

                        if (string.IsNullOrWhiteSpace(pluginCat)) pluginCat = "other";

                        var ace = JObject.Parse(File.ReadAllText(Path.Combine(tmpPath, "aces.json")));
                        var lang = JObject.Parse(File.ReadAllText(Path.Combine(tmpPath, "lang", "en-US.json")))["text"][type + "s"][id.ToLower()];

                        var prop = "\"properties\": " + (string.IsNullOrWhiteSpace(lang["properties"]?.ToString()) ? "{ }" : lang["properties"]);
                        var cats = "\"aceCategories\": " + (string.IsNullOrWhiteSpace(lang["aceCategories"]?.ToString()) ? "{ }" : lang["aceCategories"]);

                        var actionList = new List<Models.Action>();
                        var conditionList = new List<Models.Condition>();
                        var expressionList = new List<Models.Expression>();

                        foreach (JProperty category in ace.Properties())
                        {
                            //parse actions
                            var ationJson = ace[category.Name]["actions"]?.ToString();
                            var actions = ationJson != null ? JArray.Parse(ationJson) : null;
                            if (actions != null)
                            {
                                foreach (var action in actions.Children<JObject>())
                                {
                                    var actionId = action["id"].ToString();
                                    var actionAce = action.ToString();
                                    var actionLang = $"\"{actionId}\":" + lang["actions"][actionId];
                                    var actionScript = action["scriptName"].ToString();
                                    var actionParams = string.Empty;

                                    //only needed for stub methods
                                    if (action["params"] != null && action["params"].Children<JObject>().Any())
                                    {
                                        var ep = action["params"].Children<JObject>().Select(x =>
                                        {
                                            var p = x["id"].ToString();
                                            var ti = new CultureInfo("en-US", false).TextInfo;
                                            var param = ti.ToreplacedleCase(p.Replace("-", " ").ToLower()).Replace(" ", string.Empty);
                                            param = char.ToLowerInvariant(param[0]) + param.Substring(1);
                                            return param;
                                        });
                                        actionParams = string.Join(",", ep);
                                    }

                                    var act = new Models.Action
                                    {
                                        Id = actionId,
                                        Category = category.Name,
                                        Ace = actionAce,
                                        Language = actionLang,
                                        Code = $"{actionScript}({string.Join(",", actionParams)}) {{ \n}}"
                                    };

                                    actionList.Add(act);
                                }
                            }

                            //parse conditions
                            var conditionJson = ace[category.Name]["conditions"]?.ToString();
                            var conditions = conditionJson != null ? JArray.Parse(conditionJson) : null;
                            if (conditions != null)
                            {
                                foreach (var condition in conditions.Children<JObject>())
                                {
                                    var conditionId = condition["id"].ToString();
                                    var conditionAce = condition.ToString();
                                    var conditionLang = $"\"{conditionId}\":" + lang["conditions"][conditionId];
                                    var conditionScript = condition["scriptName"].ToString();
                                    var conditionParams = string.Empty;

                                    //only needed for stub methods
                                    if (condition["params"] != null && condition["params"].Children<JObject>().Any())
                                    {
                                        var ep = condition["params"].Children<JObject>().Select(x =>
                                        {
                                            var p = x["id"].ToString();
                                            var ti = new CultureInfo("en-US", false).TextInfo;
                                            var param = ti.ToreplacedleCase(p.Replace("-", " ").ToLower()).Replace(" ", string.Empty);
                                            param = char.ToLowerInvariant(param[0]) + param.Substring(1);
                                            return param;
                                        });
                                        conditionParams = string.Join(",", ep);
                                    }


                                    var cnd = new Models.Condition()
                                    {
                                        Id = conditionId,
                                        Category = category.Name,
                                        Ace = conditionAce,
                                        Language = conditionLang,
                                        Code = $"{conditionScript}({string.Join(",", conditionParams)}) {{ \n}}"
                                    };

                                    conditionList.Add(cnd);
                                }
                            }

                            //parse expression
                            var expressionJson = ace[category.Name]["expressions"]?.ToString();
                            var expressions = expressionJson != null ? JArray.Parse(expressionJson) : null;
                            if (expressions != null)
                            {
                                foreach (var expression in expressions.Children<JObject>())
                                {
                                    var expressionId = expression["id"].ToString();
                                    var expressionAce = expression.ToString();
                                    var expressionLang = $"\"{expressionId}\":" + lang["expressions"][expressionId];
                                    var expressionScript = expression["expressionName"].ToString();
                                    var expressionParams = string.Empty;

                                    //only needed for stub methods
                                    if (expression["params"] != null && expression["params"].Children<JObject>().Any())
                                    {
                                        var ep = expression["params"].Children<JObject>().Select(x =>
                                        {
                                            var p = x["id"].ToString();
                                            var ti = new CultureInfo("en-US", false).TextInfo;
                                            var param = ti.ToreplacedleCase(p.Replace("-", " ").ToLower()).Replace(" ", string.Empty);
                                            param = char.ToLowerInvariant(param[0]) + param.Substring(1);
                                            return param;
                                        });
                                        expressionParams = string.Join(",", ep);
                                    }

                                    var exp = new Models.Expression()
                                    {
                                        Id = expressionId,
                                        Category = category.Name,
                                        Ace = expressionAce,
                                        Language = expressionLang,
                                        Code = $"{expressionScript}({expressionParams}) {{ \n}}"
                                    };

                                    expressionList.Add(exp);
                                }
                            }
                        }

                        var files = Regex.Matches(pluginEdit, @"filename\s?:\s?(""|')(?<file>.*)(""|')");
                        var thirdPartyFiles = new List<ThirdPartyFile>();
                        foreach (Match match in files)
                        {
                            var fn = match.Groups["file"].ToString();
                            var info = new FileInfo(Path.Combine(Path.Combine(tmpPath, fn)));

                            var f = new ThirdPartyFile
                            {
                                Bytes = null,
                                Content = File.ReadAllText(info.FullName),
                                Extention = info.Extension,
                            };

                            f.PluginTemplate = TemplateHelper.ThirdPartyFile(f);

                            switch (info.Extension)
                            {
                                case ".js":
                                    f.Content = FormatHelper.Insatnce.FixMinifiedFiles(f.Content);
                                    f.Compress = true;
                                    f.PlainText = true;
                                    break;
                                case ".html":
                                case ".css":
                                case ".txt":
                                case ".json":
                                case ".xml":
                                    f.PlainText = true;
                                    f.Compress = false;
                                    break;
                                default:
                                    f.Content = $"BINARY FILE => {f.FileName}\nBYTE LENGTH : ({f.Bytes.Length})";
                                    f.PlainText = false;
                                    f.Compress = false;
                                    break;
                            }

                            if (fn.Contains("c3runtime"))
                            {
                                f.C3Folder = true;
                                f.FileName = fn.Replace("c3runtime/", string.Empty).Trim();
                            }
                            else if (fn.Contains("c2runtime"))
                            {
                                f.C2Folder = true;
                                f.FileName = fn.Replace("c2runtime/", string.Empty).Trim();
                            }
                            else
                            {
                                f.Rootfolder = true;
                                f.FileName = fn.Replace("/", "\\").Trim();
                            }

                            thirdPartyFiles.Add(f);
                        }

                        //todo: create c3addon, and map parsed data to c3addon 
                        var c3addon = new C3Addon
                        {
                            AddonId = id,
                            AddonCategory = pluginCat,
                            Author = addon["author"]?.ToString(),
                            Clreplaced = addon["name"]?.ToString()?.Replace(" ", string.Empty),
                            Company = addon["author"]?.ToString(),
                            Name = addon["name"]?.ToString(),
                            Description = addon["description"]?.ToString(),
                            AddonJson = addon.ToString(),
                            //PluginRunTime = pluginRun,
                            PluginEditTime = pluginEdit,
                            TypeEditTime = typeEdit,
                            //TypeRunTime = typeRun,
                            InstanceEditTime = instanceEdit,
                            //InstanceRunTime = instanceRun,
                            LanguageProperties = prop,
                            LanguageCategories = cats,
                            Id = Guid.NewGuid(),
                            CreateDate = DateTime.Now,
                            LastModified = DateTime.Now,
                            Type = pluginType
                        };

                        c3addon.Actions = new Dictionary<string, Action>();
                        c3addon.Conditions = new Dictionary<string, Condition>();
                        c3addon.Expressions = new Dictionary<string, Expression>();

                        foreach (var action in actionList)
                        {
                            c3addon.Actions.Add(action.Id, action);
                        }

                        foreach (var condition in conditionList)
                        {
                            c3addon.Conditions.Add(condition.Id, condition);
                        }

                        foreach (var expression in expressionList)
                        {
                            c3addon.Expressions.Add(expression.Id, expression);
                        }

                        c3addon.IconXml = File.Exists(Path.Combine(tmpPath, "icon.svg")) ?
                            File.ReadAllText(Path.Combine(tmpPath, "icon.svg")) :
                            ResourceReader.Insatnce.GetResourceText("c3IDE.Templates.Files.icon.svg");

                        c3addon.Template = TemplateFactory.Insatnce.CreateTemplate(c3addon.Type);

                        c3addon.ThirdPartyFiles = new Dictionary<string, ThirdPartyFile>();
                        foreach (var thirdPartyFile in thirdPartyFiles)
                        {
                            c3addon.ThirdPartyFiles.Add($"{thirdPartyFile.ID}", thirdPartyFile);
                        }

                        if (!string.IsNullOrWhiteSpace(c2runtime))
                        {
                            c3addon.C2RunTime = c2runtime;
                        }

                        //regenerate template files
                        c3addon.AddonJson = TemplateCompiler.Insatnce.CompileTemplates(c3addon.Template.AddonJson, c3addon);
                        c3addon.PluginRunTime = TemplateCompiler.Insatnce.CompileTemplates(c3addon.Template.PluginRunTime, c3addon); 
                        c3addon.TypeRunTime = TemplateCompiler.Insatnce.CompileTemplates(c3addon.Template.TypeRunTime, c3addon);
                        c3addon.InstanceRunTime = TemplateCompiler.Insatnce.CompileTemplates(c3addon.Template.InstanceRunTime, c3addon);

                        //fixup pluginedit time (replace png iconw ith svg)
                        c3addon.PluginEditTime = Regex.Replace(c3addon.PluginEditTime, @"this._info.SetIcon\(.*\);", "this._info.SetIcon(\"icon.svg\", \"image/svg+xml\");");

                        return c3addon;
                    }
                    else
                    {
                        //read file text
                        var effectCode = File.ReadAllText(Path.Combine(tmpPath, "effect.fx"));

                        //parse json
                        var lang = JObject.Parse(File.ReadAllText(Path.Combine(tmpPath, "lang", "en-US.json")))["text"][type + "s"][id.ToLower()];

                        var effect = new Effect();
                        effect.BlendsBackground = addon["blends-background"] != null && addon["blends-background"].ToString().ToLower().Contains("true");
                        effect.CrossSampling = addon["cross-sampling"] != null && addon["cross-sampling"].ToString().ToLower().Contains("true");
                        effect.PreservesOpaqueness = addon["preserves-opaqueness"] != null && addon["preserves-opaqueness"].ToString().ToLower().Contains("true");
                        effect.Animated = addon["animated"] != null && addon["animated"].ToString().ToLower().Contains("true");
                        effect.MustPredraw = addon["must-predraw"] != null && addon["must-predraw"].ToString().ToLower().Contains("true");

                        if (addon["extend-box"] != null)
                        {
                            effect.ExtendBoxVertical = int.Parse(addon["extend-box"]["vertical"].ToString());
                            effect.ExtendBoxHorizontal = int.Parse(addon["extend-box"]["horizontal"].ToString());
                        }
                        
                        //add code fx
                        effect.Code = effectCode;

                        //setup params
                        effect.Parameters = new Dictionary<string, EffectParameter>();
                        foreach (var param in addon["parameters"])
                        {
                            var p = new EffectParameter
                            {
                                Json = param.ToString(formatting: Formatting.Indented),
                                Key = param["id"].ToString()
                            };

                            var l = lang["parameters"][p.Key];
                            p.Lang = $"\"{p.Key}\":" + l;

                            switch (param["type"].ToString())
                            {
                                case "float":
                                case "percent":
                                    p.VariableDeclaration = $"uniform lowp float {p.Key}";
                                    break;
                                case "color":
                                    p.VariableDeclaration = $"uniform lowp vec3 {p.Key}";
                                    break;
                            }   
                            effect.Parameters.Add(p.Key, p);
                        }

                        var c3addon = new C3Addon
                        {
                            AddonId = id,
                            AddonCategory = addon["category"].ToString(),
                            Author = addon["author"]?.ToString(),
                            Clreplaced = addon["name"]?.ToString()?.Replace(" ", string.Empty),
                            Company = addon["author"]?.ToString(),
                            Name = addon["name"]?.ToString(),
                            Description = addon["description"]?.ToString(),
                            AddonJson = addon.ToString(),
                            Id = Guid.NewGuid(),
                            CreateDate = DateTime.Now,
                            LastModified = DateTime.Now,
                            Type = PluginType.Effect,
                            Effect = effect
                        };

                        //c3 icon
                        c3addon.IconXml = File.Exists(Path.Combine(tmpPath, "icon.svg")) ?
                            File.ReadAllText(Path.Combine(tmpPath, "icon.svg")) :
                            ResourceReader.Insatnce.GetResourceText("c3IDE.Templates.Files.icon.svg");
                        

                        c3addon.Template = TemplateFactory.Insatnce.CreateTemplate(c3addon.Type);

                        return c3addon;
                    }
                });

            }
             catch (Exception ex)
            {
                LogManager.AddErrorLog(ex);
                LogManager.AddImportLogMessage($"ERROR -> \n{ex.Message}");
                LogManager.AddImportLogMessage($"TRACE -> \n{ex.StackTrace}");
                throw;
            }
            finally
            {
                WindowManager.ShowLoadingOverlay(false);
                var logData = string.Join(Environment.NewLine, LogManager.ImportLog);
                File.WriteAllText(Path.Combine(OptionsManager.CurrentOptions.DataPath, "import.log"), logData);
                LogManager.ImportLog.Clear();
            }

        }

19 Source : TemplateHelper.cs
with GNU General Public License v3.0
from armandoalonso

public static string GeneratePropertyLang(string editTime, string propLang)
        {
            //generate new property json
            var propertyRegex = new Regex(@"new SDK[.]PluginProperty\(\""(?<type>\w+)\""\W+\""(?<id>(\w+|-)+)\""");
            var propertyMatches = propertyRegex.Matches(editTime);

            //get current dynamic properties
            var dynamicProps = JToken.Parse($"{{{propLang}}}")["properties"];

            var propList = new List<string>();
            foreach (Match m in propertyMatches)
            {
                var type = m.Groups["type"].ToString();
                var id = m.Groups["id"].ToString();

                string template;
                if (dynamicProps?[id] != null)
                {
                    //prop already exists
                    var value = dynamicProps[id].ToString();
                    template = $"\"{id}\": {value}";
                }
                else
                {
                    //this prop is new
                    switch (type)
                    {
                        case "combo":
                            template = TemplateHelper.LanguagePropertyCombo(id);
                            break;
                        case "link":
                            template = TemplateHelper.LanguagePropertyLink(id);
                            break;
                        default:
                            template = TemplateHelper.LanguagePropertyDefault(id);
                            break;
                    }
                }

                //create new property
                propList.Add(template);
            }

            //set the editor to the new property json
            return FormatHelper.Insatnce.Json(TemplateHelper.LanguageProperty(string.Join(",\n", propList)), true);
        }

19 Source : ResourceManager.cs
with GNU General Public License v2.0
from Asixa

public static float JsonToF(JToken t) => float.Parse(t.ToString());

19 Source : ResourceManager.cs
with GNU General Public License v2.0
from Asixa

public static Vector3 JsonToV3(JToken t) =>Vector3.FromList(JsonConvert.DeserializeObject<List<float>>(t.ToString()));

See More Examples