public async Task <Leaderboard> GetActivity(string bracket, Locale locale, BattleDotSwag.Region region) { var service = new BattleNetService <Leaderboard>(); var endpoint = new LeaderboardEndpoint(bracket, locale, apiKey); var leaderboard = await service.Get(endpoint, region); return(leaderboard); }
public IEnumerable <LadderEntry> CacheLadder(IEnumerable <LadderEntry> source, IMemoryCache cache, string bracket, BattleDotSwag.Region region) { var key = $"{bracket}:{region}"; cache.Set(key, source); return(source); }
public IEnumerable <LadderEntry> ConvertToLadderEntry(IEnumerable <Row> source, string bracket, BattleDotSwag.Region region) { var factory = new LadderEntryFactory(); foreach (var row in source) { var _region = new Region((int)region, region.ToString()); var ladderEntry = factory.Create(row, bracket, _region); yield return(ladderEntry); } }
public async Task <IEnumerable <LadderChange> > DetectChanges(string bracket, Locale locale, BattleDotSwag.Region region) { var processed = new List <Row>(); var leaderboard = await GetActivity(bracket, locale, region); var activity = Dedupe(leaderboard.Rows, processed); var entries = ConvertToLadderEntry(activity, bracket, region); var cachedEntries = ExistsInCache(entries, cache); var changes = CharacterChanged(cachedEntries); // var x = leaderboard.Rows.Where(p => Dedupe(p, processed)); foreach (var change in changes) { var change2 = SaveRealm(change, queueDodge); var change3 = SaveCharacter(change2, queueDodge); var fullChange = SaveLadderChange(change3, queueDodge); NotifyChanged(fullChange, sendMessage); queueDodge.SaveChanges(); } return(changes.ToList()); }