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 }
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))); } }
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); }