/// <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(); } }
/// <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); }
/// <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(); } }
/// <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); }