示例#1
0
        private static async Task <List <Item> > TryToGetItemListFromWeb(string url)
        {
            using (var wd = new WebDownload(30000))
            {
                try
                {
                    var itemsString = await wd.DownloadStringTaskAsync(url);

                    File.WriteAllText($"{AppDomain.CurrentDomain.BaseDirectory}{Settings.Default.ItemListFileName}", itemsString, Encoding.UTF8);
                    return(JsonConvert.DeserializeObject <List <Item> >(itemsString));
                }
                catch (Exception)
                {
                    try
                    {
                        var itemsString = await wd.DownloadStringTaskAsync(Settings.Default.DefaultItemListSourceUrl);

                        File.WriteAllText($"{AppDomain.CurrentDomain.BaseDirectory}{Settings.Default.ItemListFileName}", itemsString, Encoding.UTF8);
                        return(JsonConvert.DeserializeObject <List <Item> >(itemsString));
                    }
                    catch
                    {
                        return(null);
                    }
                }
            }
        }
        public static async Task <bool> GetItemsFromJsonAsync()
        {
            var url = ItemListSourceUrl;

            if (string.IsNullOrEmpty(ItemListSourceUrl))
            {
                url = Settings.Default.DefaultItemListSourceUrl;
                if (string.IsNullOrEmpty(url))
                {
                    return(false);
                }

                var ini = new IniFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Settings.Default.SettingsFileName));
                ini.WriteValue("Settings", "ItemListSourceUrl", url);
                MessageBox.Show(LanguageController.Translation("DEFAULT_ITEMLIST_HAS_BEEN_LOADED"), LanguageController.Translation("NOTE"));
            }

            if (File.Exists($"{AppDomain.CurrentDomain.BaseDirectory}{Settings.Default.ItemListFileName}"))
            {
                var fileDateTime = File.GetLastWriteTime($"{AppDomain.CurrentDomain.BaseDirectory}{Settings.Default.ItemListFileName}");

                if (fileDateTime.AddDays(7) < DateTime.Now)
                {
                    using (var wc = new WebClient())
                    {
                        var itemString = await wc.DownloadStringTaskAsync(url);

                        File.WriteAllText($"{AppDomain.CurrentDomain.BaseDirectory}{Settings.Default.ItemListFileName}", itemString, Encoding.UTF8);

                        try
                        {
                            Items = JsonConvert.DeserializeObject <List <Item> >(itemString);
                        }
                        catch (Exception ex)
                        {
                            Debug.Print(ex.Message);
                            Items = null;
                            return(false);
                        }
                        return(true);
                    }
                }

                try
                {
                    var localItemString = File.ReadAllText($"{AppDomain.CurrentDomain.BaseDirectory}{Settings.Default.ItemListFileName}");
                    Items = JsonConvert.DeserializeObject <List <Item> >(localItemString);
                }
                catch (Exception ex)
                {
                    Debug.Print(ex.Message);
                    Items = null;
                    return(false);
                }

                return(true);
            }

            using (var wd = new WebDownload(30000))
            {
                try
                {
                    var itemsString = await wd.DownloadStringTaskAsync(url);

                    File.WriteAllText($"{AppDomain.CurrentDomain.BaseDirectory}{Settings.Default.ItemListFileName}", itemsString, Encoding.UTF8);
                    Items = JsonConvert.DeserializeObject <List <Item> >(itemsString);
                    return(true);
                }
                catch (Exception)
                {
                    try
                    {
                        var itemsString = await wd.DownloadStringTaskAsync(Settings.Default.DefaultItemListSourceUrl);

                        File.WriteAllText($"{AppDomain.CurrentDomain.BaseDirectory}{Settings.Default.ItemListFileName}", itemsString, Encoding.UTF8);
                        Items = JsonConvert.DeserializeObject <List <Item> >(itemsString);
                        return(true);
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }
            }
        }