IBE.EDDN.EDDNCommunicator.SendJournalData C# (CSharp) Method

SendJournalData() public method

send the journal data
public SendJournalData ( JObject dataObject ) : void
dataObject JObject
return void
        public void SendJournalData(JObject dataObject)
        {
            try
            {
                if(m_SenderIsActivated && m_lDBCon.getIniValue<Boolean>(IBE.EDDN.EDDNView.DB_GROUPNAME, "EDDNPostJournalData", true.ToString(), false))
                {                                                                                             
                    StringBuilder journalStringEDDN = new StringBuilder();
                    journalStringEDDN.Append(String.Format("\"message\": {{"));
                    
                    journalStringEDDN.Append(String.Format("\"timestamp\":\"{0}Z\", ", DateTime.Now.ToString("s", CultureInfo.InvariantCulture) + DateTime.Now.ToString("zzz", CultureInfo.InvariantCulture)));
                    journalStringEDDN.Append(String.Format("\"event\":\"{0}\", ",      dataObject.SelectToken("event").ToString()));

                    if(dataObject.SelectToken("StarSystem") == null)
                        journalStringEDDN.Append(String.Format("\"StarSystem\":\"{0}\", ", Program.actualCondition.System));
                    else
                        journalStringEDDN.Append(String.Format("\"StarSystem\":\"{0}\", ", dataObject.SelectToken("StarSystem").ToString()));
                        
                    if(dataObject.SelectToken("StarPos") == null)
                        journalStringEDDN.Append(String.Format("\"StarPos\":[{0},{1},{2}], ", SQL.DBConnector.SQLDecimal(Program.actualCondition.Coordinates.X.Value), SQL.DBConnector.SQLDecimal(Program.actualCondition.Coordinates.Y.Value), SQL.DBConnector.SQLDecimal(Program.actualCondition.Coordinates.Z.Value)));
                    else
                        journalStringEDDN.Append(String.Format("\"StarPos\":{0}, ",    dataObject.SelectToken("StarPos")));

                    System.Text.RegularExpressions.Regex forbiddenPattern   = new System.Text.RegularExpressions.Regex("(CockpitBreach|BoostUsed|FuelLevel|FuelUsed|JumpDist|_Localised$|timestamp|event|StarSystem|StarPos)");
                    List<String> typeList = new List<String>() { "array", "boolean", "integer", "float", "double", "object", "string" };

                    
                    foreach (JToken dataItem in dataObject.SelectTokens("*"))
                    {
                        if(!forbiddenPattern.IsMatch(dataItem.Path))
                        {
                            if(typeList.Contains(dataItem.Type.ToString().ToLower()))
                            {
                                Debug.Print("allowed : " + dataItem.Path + "(" + dataItem.Type.ToString() + ")");

                                switch (dataItem.Type.ToString().ToLower())
                                {
                                    case "string":
                                        journalStringEDDN.Append(String.Format("\"{0}\":\"{1}\", ",    dataItem.Path, dataItem));    
                                        break;

                                    case "float":
                                    case "double":
                                        journalStringEDDN.Append(String.Format("\"{0}\":{1}, ",    dataItem.Path, SQL.DBConnector.SQLDecimal((double)dataItem)));    
                                        break;

                                    case "boolean":
                                        journalStringEDDN.Append(String.Format("\"{0}\":{1}, ",    dataItem.Path, dataItem.ToString().ToLower()));
                                        break;

                                    default:
                                        journalStringEDDN.Append(String.Format("\"{0}\":{1}, ",    dataItem.Path, dataItem));
                                        break;
                                }
                            }
                            else
                                Debug.Print("disallowed : " + dataItem.Path + "(" + dataItem.Type.ToString() + ")");

                            
                        }
                        else
                            Debug.Print("disallowed : " + dataItem.Path);
                    }

                    journalStringEDDN.Remove(journalStringEDDN.Length-2, 2);
                    journalStringEDDN.Append("}");


                    _Send_Journal.Enqueue(journalStringEDDN);
                    _SendDelayTimer_Journal.Start();

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error while extracting journal data for eddn", ex);
            }
        }