private static List <EDDNCommodity> prepareCommodityInformation(List <CommodityMarketQuote> commodities) { List <EDDNCommodity> eddnCommodities = new List <EDDNCommodity>(); foreach (CommodityMarketQuote quote in commodities) { if (quote.definition == null) { continue; } if (!quote.fromFDev) { // We only want data from the Frontier API (or market.json) // Data from 3rd parties (EDDB, EDSM, EDDP, etc.) is not acceptable. continue; } if (quote.avgprice == 0) { // Check that the average price is greater than zero. continue; } if (quote.definition.category == CommodityCategory.NonMarketable) { // Include only marketable commodities. continue; } EDDNCommodity eddnCommodity = new EDDNCommodity(quote); eddnCommodities.Add(eddnCommodity); } return(eddnCommodities); }
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 <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); data.Add("commodities", eddnCommodities); EDDNBody body = new EDDNBody(); body.header = generateHeader(); body.schemaRef = "https://eddn.edcd.io/schemas/commodity/3" + (EDDI.Instance.inBeta ? "/test" : ""); body.message = data; sendMessage(body); } } }
private void sendCommodityInformation() { if (EDDI.Instance.LastStation != null && EDDI.Instance.LastStation.commodities != null) { List <EDDNCommodity> eddnCommodities = new List <EDDNCommodity>(); foreach (Commodity commodity in EDDI.Instance.LastStation.commodities) { if (commodity.category == "NonMarketable") { continue; } EDDNCommodity eddnCommodity = new EDDNCommodity(); eddnCommodity.name = commodity.EDName; eddnCommodity.meanPrice = commodity.avgprice; eddnCommodity.buyPrice = commodity.buyprice; eddnCommodity.stock = commodity.stock; eddnCommodity.stockBracket = commodity.stockbracket; eddnCommodity.sellPrice = commodity.sellprice; eddnCommodity.demand = 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", EDDI.Instance.LastStation.systemname); data.Add("stationName", EDDI.Instance.LastStation.name); data.Add("commodities", eddnCommodities); EDDNBody body = new EDDNBody(); body.header = generateHeader(); body.schemaRef = "http://schemas.elite-markets.net/eddn/commodity/3"; body.message = data; sendMessage(body); } } }
private void sendCommodityInformation() { if (EDDI.Instance.CurrentStation != null && EDDI.Instance.CurrentStation.commodities != null) { 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 = commodity.avgprice; eddnCommodity.buyPrice = commodity.buyprice; eddnCommodity.stock = commodity.stock; eddnCommodity.stockBracket = commodity.stockbracket; eddnCommodity.sellPrice = commodity.sellprice; eddnCommodity.demand = 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", EDDI.Instance.CurrentStation.systemname); data.Add("stationName", EDDI.Instance.CurrentStation.name); data.Add("commodities", eddnCommodities); EDDNBody body = new EDDNBody(); body.header = generateHeader(); body.schemaRef = "http://schemas.elite-markets.net/eddn/commodity/3"; body.message = data; sendMessage(body); } } }