private static List <EDDNEconomy> prepareEconomyInformation() { List <EDDNEconomy> eddnEconomies = new List <EDDNEconomy>(); if (EDDI.Instance.CurrentStation.economyShares != null) { foreach (EconomyShare economy in EDDI.Instance.CurrentStation.economyShares) { EDDNEconomy eddnEconomy = new EDDNEconomy(economy); eddnEconomies.Add(eddnEconomy); } } return(eddnEconomies); }
private void sendCommodityInformation() { // It's possible that the commodity data, if it is here, has already come from EDDB. We use the average price // as a marker: this isn't visible in EDDB, so if we have average price we know that this is data from the companion // API and should be reported if (EDDI.Instance.CurrentStation != null && EDDI.Instance.CurrentStation.commodities != null && EDDI.Instance.CurrentStation.commodities.Count > 0 && EDDI.Instance.CurrentStation.commodities[0].avgprice != null) { List <EDDNEconomy> eddnEconomies = new List <EDDNEconomy>(); if (EDDI.Instance.CurrentStation.economies != null) { foreach (CompanionAppEconomy economy in EDDI.Instance.CurrentStation.economies) { EDDNEconomy eddnEconomy = new EDDNEconomy(); eddnEconomy.name = economy.name; eddnEconomy.proportion = economy.proportion; eddnEconomies.Add(eddnEconomy); } } List <EDDNCommodity> eddnCommodities = new List <EDDNCommodity>(); foreach (Commodity commodity in EDDI.Instance.CurrentStation.commodities) { if (commodity.category == "NonMarketable") { continue; } EDDNCommodity eddnCommodity = new EDDNCommodity(); eddnCommodity.name = commodity.EDName; eddnCommodity.meanPrice = (int)commodity.avgprice; eddnCommodity.buyPrice = (int)commodity.buyprice; eddnCommodity.stock = (int)commodity.stock; eddnCommodity.stockBracket = commodity.stockbracket; eddnCommodity.sellPrice = (int)commodity.sellprice; eddnCommodity.demand = (int)commodity.demand; eddnCommodity.demandBracket = commodity.demandbracket; if (commodity.StatusFlags.Count > 0) { eddnCommodity.statusFlags = commodity.StatusFlags; } eddnCommodities.Add(eddnCommodity); } ; // Only send the message if we have commodities if (eddnCommodities.Count > 0) { IDictionary <string, object> data = new Dictionary <string, object>(); data.Add("timestamp", DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")); data.Add("systemName", systemName); data.Add("stationName", EDDI.Instance.CurrentStation.name); if (eddnEconomies.Count > 0) { data.Add("economies", eddnEconomies); } data.Add("commodities", eddnCommodities); if (EDDI.Instance.CurrentStation.prohibited.Count > 0) { data.Add("prohibited", EDDI.Instance.CurrentStation.prohibited); } EDDNBody body = new EDDNBody(); body.header = generateHeader(); body.schemaRef = "https://eddn.edcd.io/schemas/commodity/3" + (EDDI.Instance.inBeta ? "/test" : ""); body.message = data; Logging.Debug("EDDN message is: " + JsonConvert.SerializeObject(body)); sendMessage(body); } } }