Example #1
0
        /// <summary>
        /// Ensures the importation.
        /// </summary>
        private void EnsureImportation()
        {
            // Quit if query is pending
            if (s_queryPending)
            {
                return;
            }

            // Check the selected provider
            if (!String.IsNullOrWhiteSpace(SelectedProviderName))
            {
                if (SelectedProviderName != Name)
                {
                    Loaded               = false;
                    CachedUntil          = DateTime.MinValue;
                    SelectedProviderName = Name;
                }
            }
            else
            {
                SelectedProviderName = Name;
            }

            string file = LocalXmlCache.GetFileInfo(Filename).FullName;

            if ((!Loaded && !File.Exists(file)) || (Loaded && CachedUntil < DateTime.UtcNow))
            {
                Task.WhenAll(GetPricesAsync());
                return;
            }

            // Exit if we have already imported the list
            if (Loaded)
            {
                return;
            }

            if (File.Exists(file))
            {
                LoadFromFile(file);
            }
            else
            {
                Loaded      = true;
                CachedUntil = DateTime.UtcNow.AddHours(1);
                PriceByItemID.Clear();
            }
        }
Example #2
0
        /// <summary>
        /// Loads from file.
        /// </summary>
        /// <param name="file">The file.</param>
        private void LoadFromFile(string file)
        {
            CachedUntil = File.GetLastWriteTimeUtc(file).AddDays(1);

            // Deserialize the xml file
            SerializableEMDItemPrices result = Util.DeserializeXmlFromFile <SerializableEMDItemPrices>(file);

            // In case the file is an old one, we try to get a fresh copy
            if (result == null || CachedUntil < DateTime.UtcNow)
            {
                Task.WhenAll(GetPricesAsync());
                return;
            }

            PriceByItemID.Clear();
            Loaded = false;

            // Import the data
            Import(result.Result.ItemPrices);
        }
Example #3
0
        /// <summary>
        /// Ensures the importation.
        /// </summary>
        private void EnsureImportation()
        {
            // Quit if query is pending
            if (s_queryPending)
            {
                return;
            }

            // Check the selected provider
            if (!string.IsNullOrWhiteSpace(SelectedProviderName))
            {
                if (SelectedProviderName != Name)
                {
                    Loaded = false;
                    SelectedProviderName = Name;
                }
            }
            else
            {
                SelectedProviderName = Name;
            }

            string file = LocalXmlCache.GetFileInfo(Filename).FullName;

            // Exit if we have already imported the list
            if (Loaded)
            {
                return;
            }

            if (File.Exists(file))
            {
                LoadFromFile(file);
            }
            else
            {
                Loaded = true;
                PriceByItemID.Clear();
            }
        }
Example #4
0
        /// <summary>
        /// Downloads the item prices list.
        /// </summary>
        protected override async Task GetPricesAsync()
        {
            // Quit if query is pending
            if (s_queryPending)
            {
                return;
            }

            s_queryPending = true;

            PriceByItemID.Clear();
            Loaded = false;
            EveMonClient.Trace("begin");
            var url = new Uri(NetworkConstants.EVEMarketDataBaseUrl + NetworkConstants.
                              EVEMarketDataAPIItemPrices);
            var result = await Util.DownloadXmlAsync <SerializableEMDItemPrices>(url,
                                                                                 new RequestParams()
            {
                AcceptEncoded = true
            });

            OnPricesDownloaded(result);
        }