Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public IEnumerable <LadderEntry> CacheLadder(IEnumerable <LadderEntry> source, IMemoryCache cache, string bracket, BattleDotSwag.Region region)
        {
            var key = $"{bracket}:{region}";

            cache.Set(key, source);
            return(source);
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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());
        }