/// <summary>
        ///     Downloads the currently available TSM API data.
        /// </summary>
        /// <returns>TSM API Status Code: 200 = true, [400:500] false.</returns>
        public async Task <bool> DownloadItemData()
        {
            using (var httpClient = new HttpClient(new HttpClientHandler
            {
                AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip
            }))
            {
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept",
                                                                         "text/html,application/xhtml+xml,application/xml");
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate");
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent",
                                                                         "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Charset", "ISO-8859-1");

                httpClient.BaseAddress = new Uri("http://api.tradeskillmaster.com/v1/item/");

                var tsmDownloadUrl =
                    $"{GetCurrentConfig().Region}/{GetCurrentConfig().Realm}?format=json&fields=Id%2CMarketValue%2CMinBuyout%2CHistoricalPrice%2CRegionMarketAvg" +
                    $"%2CRegionMinBuyoutAvg%2CRegionHistoricalPrice%2CRegionSaleAvg%2CRegionAvgDailySold%2CRegionSaleRate&apiKey={GetCurrentConfig().TsmApiKey}";

                var response = await httpClient.GetAsync(tsmDownloadUrl);

                if (!response.IsSuccessStatusCode)
                {
                    switch (response.StatusCode)
                    {
                    case HttpStatusCode.BadRequest:
                        _mainWindowView.SetErrorMessage(
                            "Download error: Check your input for TSM API Key and Realm and try again.");
                        break;

                    case HttpStatusCode.InternalServerError:
                        _mainWindowView.SetErrorMessage(
                            "Download error: TSM API currently has some problems. Please try again later.");
                        break;

                    default:
                        _mainWindowView.SetErrorMessage(
                            $"Download error: Something went wrong. Please provide author with following error code: {response.StatusCode.ToString()}");
                        break;
                    }

                    return(false);
                }

                var tsmResponseContent = await response.Content.ReadAsStringAsync();

                File.WriteAllText("TSMData.json", tsmResponseContent);

                ItemList = JsonConvert.DeserializeObject <List <ItemModel> >(tsmResponseContent);
                return(true);
            }
        }