示例#1
0
        internal void UpdateFrom(CachedClanWar fetched)
        {
            if (ServerExpiration > fetched.ServerExpiration)
            {
                return;
            }

            base.UpdateFrom(fetched);

            State = fetched.State;

            PreparationStartTime = fetched.PreparationStartTime;

            //Type = fetched.Type;  //only do this at the beginning of war
        }
示例#2
0
        internal static async Task <CachedClanWar> FromCurrentWarResponseAsync(string tag, ClansClientBase clansCacheBase, ClansApi clansApi, CancellationToken?cancellationToken = default)
        {
            try
            {
                ApiResponse <ClanWar> apiResponse = await clansApi.FetchCurrentWarResponseAsync(tag, cancellationToken);

                CachedClanWar result = new CachedClanWar(tag, apiResponse, await clansCacheBase.ClanWarTimeToLiveAsync(apiResponse).ConfigureAwait(false));

                return(result);
            }
            catch (Exception e)
            {
                return(new CachedClanWar(tag, await clansCacheBase.ClanWarTimeToLiveAsync(e).ConfigureAwait(false)));
            }
        }
示例#3
0
        internal static bool IsNewWar(CachedClanWar stored, CachedClanWar fetched)
        {
            if (fetched.Data == null || fetched.Data.State == WarState.NotInWar)
            {
                return(false);
            }

            if (stored.Data == null)
            {
                return(true);
            }

            if (stored.Data.PreparationStartTime == fetched.Data.PreparationStartTime)
            {
                return(false);
            }

            return(true);
        }