public async Task GetAppList()
        {
            if (_locker)
            {
                return;
            }

            _cancelationToken = false;
            _locker           = true;

            var apiKey = (await _repoApiParameter.GetApiParameterAsync("Steam", "steam-api-key"))?.Value;

            if (string.IsNullOrEmpty(apiKey))
            {
                Clients.All.addStatusAppListMessage("Необходимо задать натройку steam-api-key для API Steam");
                _locker = false;
                return;
            }

            var data = new SteamApp[0];

            using (var httpClient = new HttpClient())
            {
                var json = await httpClient.GetStringAsync($"{_getAppListUrl}?key={apiKey}");

                data = ((JArray)JsonConvert.DeserializeObject <dynamic>(json).applist.apps).Select(x => new SteamApp()
                {
                    Id = (int)x["appid"], Name = (string)x["name"]
                }).ToArray();
            }

            if (!data.Any())
            {
                Clients.All.addStatusAppListMessage("Запрос вернул пустой набор данных!");
                _locker = false;
                return;
            }

            Clients.All.addStatusAppListMessage("Получение существующих записей...");
            var existData = (await _repoSteamApp.AllAsync()).Select(x => _mapper.Map <VMSteamApp, SteamApp>(x)).ToArray();

            var comparer = new SteamAppComparer();
            var list     = data.Except(existData, comparer).ToArray();

            if (!list.Any())
            {
                Clients.All.endProcessingAppList();
                _locker = false;
                return;
            }


            var length = list.Length;

            SteamApp item;

            for (int i = 0; i < length; i++)
            {
                if (_cancelationToken)
                {
                    break;
                }

                var progressBarValue = System.Math.Round((double)(i + 1) * 100 / length, 2);
                item = list[i];
                Clients.All.addStatusAppListMessage($"%[{progressBarValue}] appid: {item.Id}, name: {item.Name}", progressBarValue);
                _repoSteamApp.Create(item);
            }

            _locker = false;

            Clients.All.endProcessingAppList();
        }