public JObject CreateEDDNJournalMessage(JournalMarket journal, double x, double y, double z, long?systemAddress) { if (journal.Commodities == null || journal.Commodities.Count == 0) { return(null); } JObject msg = new JObject(); msg["header"] = Header(); msg["$schemaRef"] = GetEDDNJournalSchemaRef(); JObject message = journal.GetJson(); message = RemoveCommonKeys(message); message["StarPos"] = new JArray(new float[] { (float)x, (float)y, (float)z }); if (systemAddress != null) { message["SystemAddress"] = systemAddress; } msg["message"] = message; return(msg); }
static public bool?SendToEDDN(HistoryEntry he, bool debugonly = false) { EDDNClass eddn = new EDDNClass(); if (he.Commander != null) { eddn.commanderName = he.Commander.EdsmName; if (string.IsNullOrEmpty(eddn.commanderName)) { eddn.commanderName = he.Commander.Name; } if (he.Commander.Name.StartsWith("[BETA]", StringComparison.InvariantCultureIgnoreCase)) { eddn.isBeta = true; } } if (he.IsBetaMessage) { eddn.isBeta = true; } JournalEntry je = he.journalEntry; if (je == null) { je = JournalEntry.Get(he.Journalid); } BaseUtils.JSON.JObject msg = null; if (je.EventTypeID == JournalTypeEnum.FSDJump) { msg = eddn.CreateEDDNMessage(je as JournalFSDJump); } else if (je.EventTypeID == JournalTypeEnum.Location) { msg = eddn.CreateEDDNMessage(je as JournalLocation); } else if (je.EventTypeID == JournalTypeEnum.CarrierJump) { msg = eddn.CreateEDDNMessage(je as JournalCarrierJump); } else if (je.EventTypeID == JournalTypeEnum.Docked) { msg = eddn.CreateEDDNMessage(je as JournalDocked, he.System); } else if (je.EventTypeID == JournalTypeEnum.Scan) { msg = eddn.CreateEDDNMessage(je as JournalScan, he.System); } else if (je.EventTypeID == JournalTypeEnum.SAASignalsFound) { msg = eddn.CreateEDDNMessage(je as JournalSAASignalsFound, he.System); } else if (je.EventTypeID == JournalTypeEnum.Outfitting) { msg = eddn.CreateEDDNOutfittingMessage(je as JournalOutfitting); } else if (je.EventTypeID == JournalTypeEnum.Shipyard) { msg = eddn.CreateEDDNShipyardMessage(je as JournalShipyard); } else if (je.EventTypeID == JournalTypeEnum.Market) { JournalMarket jm = je as JournalMarket; msg = eddn.CreateEDDNCommodityMessage(jm.Commodities, jm.StarSystem, jm.Station, jm.MarketID, jm.EventTimeUTC); // if its devoid of data, null returned } if (msg != null) { System.Diagnostics.Debug.WriteLine("Send to EDDN " + msg.ToString(true)); if (!debugonly && eddn.PostMessage(msg)) { he.journalEntry.SetEddnSync(); return(true); } else { return(false); } } else { return(null); } }
static public bool SendToEDDN(HistoryEntry he) { EDDNClass eddn = new EDDNClass(); if (he.Commander != null) { eddn.commanderName = he.Commander.EdsmName; if (string.IsNullOrEmpty(eddn.commanderName)) { eddn.commanderName = he.Commander.Name; } if (he.Commander.Name.StartsWith("[BETA]", StringComparison.InvariantCultureIgnoreCase)) { eddn.isBeta = true; } } if (he.IsBetaMessage) { eddn.isBeta = true; } JournalEntry je = he.journalEntry; if (je == null) { je = JournalEntry.Get(he.Journalid); } JObject msg = null; JObject msg2 = null; if (je.EventTypeID == JournalTypeEnum.FSDJump) { msg = eddn.CreateEDDNMessage(je as JournalFSDJump); } else if (je.EventTypeID == JournalTypeEnum.Location) { msg = eddn.CreateEDDNMessage(je as JournalLocation); } else if (je.EventTypeID == JournalTypeEnum.Docked) { msg = eddn.CreateEDDNMessage(je as JournalDocked, he.System); } else if (je.EventTypeID == JournalTypeEnum.Scan) { msg = eddn.CreateEDDNMessage(je as JournalScan, he.System); } else if (je.EventTypeID == JournalTypeEnum.Outfitting) { //Removed - not in EDDN spec to send this msg2 = eddn.CreateEDDNJournalMessage(je as JournalOutfitting, he.System.X, he.System.Y, he.System.Z, he.System.SystemAddress); msg = eddn.CreateEDDNOutfittingMessage(je as JournalOutfitting, he.System); } else if (je.EventTypeID == JournalTypeEnum.Shipyard) { //Removed - not in EDDN spec to send this msg2 = eddn.CreateEDDNJournalMessage(je as JournalShipyard, he.System.X, he.System.Y, he.System.Z, he.System.SystemAddress); msg = eddn.CreateEDDNShipyardMessage(je as JournalShipyard, he.System); } else if (je.EventTypeID == JournalTypeEnum.Market) { JournalMarket jm = je as JournalMarket; //Removed - not in EDDN spec to send this msg2 = eddn.CreateEDDNJournalMessage(jm, he.System.X, he.System.Y, he.System.Z, he.System.SystemAddress); msg = eddn.CreateEDDNCommodityMessage(jm.Commodities, jm.StarSystem, jm.Station, jm.MarketID, DateTime.UtcNow); // if its devoid of data, null returned } if (msg != null) { if (eddn.PostMessage(msg)) { if (msg2 != null) { eddn.PostMessage(msg2); } he.SetEddnSync(); return(true); } } return(false); }