示例#1
0
        private async Task RebuildRefTypeItem()
        {
            var server = Factory.Create <IEveApi>().Server;
            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, RefTypeItemCollection>($"{server.XMLApi}eve/RefTypes.xml.aspx");

            await EveCache.SetCache(result.Items);
        }
示例#2
0
        private async Task RebuildRegionsAndSolarSystems()
        {
            var eve          = Factory.Create <IEveApi>();
            var regions      = (await this.ConsumeUntil <RegionCollection>((await eve.GetMotdAsync()).Regions.HRef, x => x.Next == null ? null : x.Next.HRef)).SelectMany(x => x.Items);
            var solarSystems = (await this.ConsumeUntil <SolarSystemCollection>((await eve.GetMotdAsync()).SolarSystems.HRef, x => x.Next == null ? null : x.Next.HRef)).SelectMany(x => x.Items);

            await EveCache.SetCache(regions);

            await EveCache.SetCache(solarSystems);
        }
示例#3
0
        private async Task LoadCache()
        {
            this.LoadStaticData();

            try
            {
                // We are relying on an exception that happens here if the cache is not available
                await EveCache.GetCacheCollection <SolarSystem>();

                await EveCache.GetCacheCollection <Region>();

                await EveCache.GetCacheCollection <RefTypeItem>();

                this.CacheRebuildRequired = false;
            }
            catch
            {
                this.CacheRebuildRequired = true;
            }
        }
示例#4
0
        public async Task <IEnumerable <CharacterName> > GetCharacterNamesAsync(long[] characterIds)
        {
            if (characterIds.Length == 0)
            {
                return(new CharacterName[0]);
            }

            // If not loaded... Load it
            try
            {
                if (_characterNames.Count == 0)
                {
                    _characterNames.AddRange(await EveCache.GetCacheCollection <CharacterName>());
                }
            }
            catch
            {
                // Happens... And expected if cache is not available... But too lazy to correctly handle this
            }

            var notFound = characterIds.Where(x => _characterNames.All(y => y.CharacterId != x));

            if (!notFound.Any() && _characterNames.Count > 0)
            {
                return(_characterNames.Where(x => characterIds.Contains(x.CharacterId)));
            }

            var result = await WebServiceConsumer.Consume <DefaultRestClient, XmlDeserializer, CharacterNameCollection>(
                $"{this.Server.XMLApi}eve/CharacterName.xml.aspx?ids={(_characterNames.Count == 0 ? characterIds : notFound).Join(",")}");

            _characterNames.AddRange(result.Items);

            if (result.Items.Any())
            {
                await EveCache.SetCache(_characterNames);
            }

            return(_characterNames.Where(x => characterIds.Contains(x.CharacterId)));
        }