示例#1
0
 public static async Task <string> GetSteamNameAsync([CanBeNull] string id)
 {
     if (id == null)
     {
         return(null);
     }
     if (_steamNameCache.TryGetValue(id, out var name))
     {
         return(name);
     }
     return(_steamNameCache[id] = IsValidSteamId(id) ? await Task.Run(() => SteamWebProvider.TryToGetUserName(id)) : null);
 }
示例#2
0
        public async Task UpdateProgress(IProgress <string> progress, CancellationToken cancellation)
        {
            if (SteamIdHelper.Instance.Value == null)
            {
                throw new InformativeException("Can’t get challenges progress", "Steam ID is missing.");
            }

            progress.Report("Finishing preparing…");
            await EnsureLoadedAsync();

            if (cancellation.IsCancellationRequested)
            {
                return;
            }

            progress.Report("Loading stats…");
            string[] achievments;
            try {
                achievments = await Task.Run(() => SteamWebProvider.GetAchievments(CommonAcConsts.AppId, SteamIdHelper.Instance.Value), cancellation);

                if (cancellation.IsCancellationRequested)
                {
                    return;
                }
            } catch (WebException e)
                when(e.Status == WebExceptionStatus.ProtocolError && (e.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.InternalServerError)
                {
                    throw new InformativeException("Can’t get challenges progress because of internal server error (500)", "Make sure Steam account isn’t private.");
                }

            foreach (var eventObject in LoadedOnly)
            {
                eventObject.TakenPlace = 5;
            }

            foreach (var achievment in achievments.Where(x => x.StartsWith(@"SPECIAL_EVENT_")))
            {
                var id    = achievment.Substring(0, achievment.Length - 2);
                var place = FlexibleParser.TryParseInt(achievment.Substring(achievment.Length - 1));

                var eventObject = GetById(id);
                if (eventObject == null || !place.HasValue)
                {
                    continue;
                }

                eventObject.TakenPlace = Math.Min(eventObject.TakenPlace, (eventObject.ConditionType == null ? 4 : 3) - place.Value);
            }
        }
示例#3
0
 public static async Task <string> GetSteamName(string id)
 {
     return(IsValidSteamId(id) ? await Task.Run(() => SteamWebProvider.TryToGetUserName(id)) : null);
 }