예제 #1
0
        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);
        }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        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);
                }
            }
        }