Exemplo n.º 1
0
        public IEnumerable <Clan> GetAllRecent(bool throwOnError = false)
        {
            lock (_clansLock)
            {
                if ((_clans != null) && (_clans.Count > 0))
                {
                    Log.Debug("Aproveitando clãs em cache.");
                    return(_clans.Values);
                }

                var di  = new DirectoryInfo(Path.Combine(_dataDirectory, "Clans"));
                var fis = di.EnumerateFiles("clan.*.json").Where(fi => fi.Length > 100);

                var allClans = fis
                               .Select(fi => Clan.FromFile(fi.FullName, throwOnError)).Where(c => !c.IsOnError).ToList();

                var duplicates = new HashSet <string>(allClans.GroupBy(c => c.ClanTag).Where(g => g.Count() > 1)
                                                      .Select(g => g.Key));

                _clans = allClans.Where(c => !duplicates.Contains(c.ClanTag)).ToDictionary(c => c.ClanTag);

                Log.DebugFormat("Colocados {0} clãs em cache.", _clans.Count);

                return(_clans.Values);
            }
        }
Exemplo n.º 2
0
        public Clan GetClan(string clanTag, bool throwOnError = true)
        {
            lock (_clansLock)
            {
                if (_clans != null && _clans.TryGetValue(clanTag, out var clan))
                {
                    Log.DebugFormat("Cache hit para {0}", clanTag);
                    return(clan);
                }
                Log.DebugFormat("Cache miss para {0}", clanTag);
            }

            var fileName = Path.Combine(_dataDirectory, "Clans", $"clan.{clanTag}.json");

            return(!File.Exists(fileName) ? null : Clan.FromFile(fileName));
        }