public static void EnsureExpiration(this IAuthenticationScope authenticationScope)
 {
     if (authenticationScope.IsExpired())
     {
         throw new DiabloApiAuthenticationExpiredException();
     }
 }
Example #2
0
        internal BattleNetClient CreateClient(IAuthenticationScope authenticationScope)
        {
            authenticationScope.EnsureExpiration();
            var regionString       = EnumConversionHelper.RegionToString(authenticationScope.Region);
            var localizationString = EnumConversionHelper.LocalizationToString(authenticationScope.Localization);

            return(new BattleNetClient(authenticationScope.AccessToken, regionString, localizationString, _tokenBucket));
        }
Example #3
0
        public async Task <IEnumerable <Character> > GetCharactersAsync(IAuthenticationScope authenticationScope)
        {
            var characterKinds = await GetCharacterKindsAsync();

            var charactersTasks = characterKinds.Select(id => GetCharacterAsync(authenticationScope, id));
            var characters      = await Task.WhenAll(charactersTasks);

            return(characters);
        }
Example #4
0
        private async Task <T> GetItem <T>(IAuthenticationScope authenticationScope, ItemMapper <T> mapper, ItemId itemId)
            where T : Item, new()
        {
            using (var client = CreateClient(authenticationScope))
            {
                var item = await client.GetItemAsync($"item/{itemId}");

                return(mapper.Map(item));
            }
        }
Example #5
0
        public async Task <IEnumerable <Follower> > GetFollowersAsync(IAuthenticationScope authenticationScope)
        {
            var followerIds = Enum.GetValues(typeof(FollowerId))
                              .Cast <FollowerId>()
                              .ToList();

            var followersTasks = followerIds.Select(id => GetFollowerAsync(authenticationScope, id));
            var followers      = await Task.WhenAll(followersTasks);

            return(followers);
        }
Example #6
0
        public async Task <IEnumerable <Artisan> > GetArtisansAsync(IAuthenticationScope authenticationScope)
        {
            var artisanIds = Enum.GetValues(typeof(ArtisanId))
                             .Cast <ArtisanId>()
                             .ToList();

            var artisanTasks = artisanIds.Select(id => GetArtisanAsync(authenticationScope, id));
            var artisans     = await Task.WhenAll(artisanTasks);

            return(artisans);
        }
Example #7
0
        public async Task <IEnumerable <Act> > GetActsAsync(IAuthenticationScope authenticationScope)
        {
            var mapper = new ActMapper();

            using (var client = CreateClient(authenticationScope))
            {
                var actIndex = await client.GetActIndexAsync();

                return(mapper.Map(actIndex.Acts));
            }
        }
Example #8
0
        public async Task <Act> GetActAsync(IAuthenticationScope authenticationScope, ActId actId)
        {
            var mapper     = new ActMapper();
            var actIdIndex = (byte)actId;

            using (var client = CreateClient(authenticationScope))
            {
                var act = await client.GetActAsync(actIdIndex);

                return(mapper.Map(act));
            }
        }
Example #9
0
        public async Task <Follower> GetFollowerAsync(IAuthenticationScope authenticationScope, FollowerId followerId)
        {
            var mapper       = new FollowerMapper();
            var followerSlug = followerId.ToString().ToLower();

            using (var client = CreateClient(authenticationScope))
            {
                var follower = await client.GetFollowerAsync(followerSlug);

                return(mapper.Map(follower));
            }
        }
Example #10
0
        public async Task <Artisan> GetArtisanAsync(IAuthenticationScope authenticationScope, ArtisanId artisanId)
        {
            var mapper      = new ArtisanMapper();
            var artisanSlug = artisanId.ToString().ToLower();

            using (var client = CreateClient(authenticationScope))
            {
                var artisan = await client.GetArtisanAsync(artisanSlug);

                return(mapper.Map(artisan));
            }
        }
Example #11
0
        public async Task <Recipe> GetRecipeAsync(IAuthenticationScope authenticationScope, RecipeId recipeId)
        {
            var mapper      = new RecipeMapper(recipeId.Id);
            var artisanSlug = EnumConversionHelper.ArtisanIdentifierToString(recipeId.Id);

            using (var client = CreateClient(authenticationScope))
            {
                var recipe = await client.GetRecipeAsync(artisanSlug, recipeId.Slug);

                return(mapper.Map(recipe));
            }
        }
Example #12
0
        public async Task <Account> GetAccountAsync(IAuthenticationScope authenticationScope, BattleTagId battleTagId)
        {
            var mapper    = new AccountMapper();
            var battleTag = $"{battleTagId.Name}-{battleTagId.Index}";

            using (var client = CreateClient(authenticationScope))
            {
                var account = await client.GetAccountAsync(battleTag);

                return(mapper.Map(account));
            }
        }
Example #13
0
        public async Task <SoloLeaderboard> GetSoloLeaderboard(IAuthenticationScope authenticationScope, SoloLeaderboardId leaderboardId)
        {
            var mapper          = new SoloLeaderboardMapper(leaderboardId);
            var leaderboardSlug = leaderboardId.ToSlug();
            var seasonIndex     = (int)leaderboardId.SeasonId;

            using (var client = CreateClient(authenticationScope))
            {
                var seasonLeaderboardDetail = await client.GetSeasonLeaderboardAsync(seasonIndex, leaderboardSlug);

                return(mapper.Map(seasonLeaderboardDetail));
            }
        }
Example #14
0
        public async Task <Hero> GetHeroAsync(IAuthenticationScope authenticationScope, HeroId heroId)
        {
            var battleTag = $"{heroId.BattleTag.Name}-{heroId.BattleTag.Index}";

            using (var client = CreateClient(authenticationScope))
            {
                var hero = await client.GetHeroAsync(battleTag, heroId.Id);

                var items = await client.GetDetailedHeroItemsAsync(battleTag, heroId.Id);

                var followerItems = await client.GetDetailedFollowerItemsAsync(battleTag, heroId.Id);

                var mapper = new HeroMapper(heroId, items, followerItems);
                return(mapper.Map(hero));
            }
        }
Example #15
0
        private async Task <IEnumerable <T> > GetItems <T>(IAuthenticationScope authenticationScope, ItemMapper <T> mapper, params string[] itemTypeIndices)
            where T : Item, new()
        {
            using (var client = CreateClient(authenticationScope))
            {
                var processItemTypeIndicesToItemTypesTasks = itemTypeIndices.Select(async itemTypeIndex => await client.GetItemTypeAsync(itemTypeIndex))
                                                             .ToList();
                var nestedItemTypes = await Task.WhenAll(processItemTypeIndicesToItemTypesTasks);

                var itemTypes = nestedItemTypes.SelectMany(types => types);

                var processItemTypesToItemsTasks = itemTypes.Select(async itemType => await client.GetItemAsync(itemType.Path))
                                                   .ToList();
                var items = await Task.WhenAll(processItemTypesToItemsTasks);

                return(mapper.Map(items));
            }
        }
Example #16
0
        public async Task <Character> GetCharacterAsync(IAuthenticationScope authenticationScope, CharacterKind characterKind)
        {
            var mapper      = new CharacterMapper();
            var artisanSlug = EnumConversionHelper.CharacterIdentifierToString(characterKind);

            using (var client = CreateClient(authenticationScope))
            {
                var characterClass = await client.GetCharacterClassAsync(artisanSlug);

                /* GetApiSkill only extends active skills with runes, all the other properties are already retrieved via GetCharacterClass */
                var activeApiSkills = new List <CharacterApiSkillDto>();
                foreach (var skill in characterClass.Skills.Actives)
                {
                    var apiSkill = await client.GetApiSkillAsync(artisanSlug, skill.Slug);

                    activeApiSkills.Add(apiSkill);
                }

                mapper.Actives = activeApiSkills;
                return(mapper.Map(characterClass));
            }
        }
Example #17
0
        public Task <ItemGem> GetGemAsync(IAuthenticationScope authenticationScope, ItemId itemId)
        {
            var mapper = new ItemGemMapper();

            return(GetItem(authenticationScope, mapper, itemId));
        }
 public static bool IsExpired(this IAuthenticationScope authenticationScope)
 {
     return(DateTime.Now > authenticationScope.ExpirationDate);
 }
Example #19
0
        public Task <IEnumerable <ItemLegendaryGem> > GetLegendaryGemsAsync(IAuthenticationScope authenticationScope)
        {
            var mapper = new ItemLegendaryGemMapper();

            return(GetItems(authenticationScope, mapper, "item-type/upgradeablejewel"));
        }
Example #20
0
        public Task <IEnumerable <ItemGem> > GetGemsAsync(IAuthenticationScope authenticationScope)
        {
            var mapper = new ItemGemMapper();

            return(GetItems(authenticationScope, mapper, "item-type/gem"));
        }
Example #21
0
        public Task <ItemLegendaryPotion> GetLegendaryPotionAsync(IAuthenticationScope authenticationScope, ItemId itemId)
        {
            var mapper = new ItemLegendaryPotionMapper();

            return(GetItem(authenticationScope, mapper, itemId));
        }
Example #22
0
        public Task <IEnumerable <ItemLegendaryPotion> > GetLegendaryPotionsAsync(IAuthenticationScope authenticationScope)
        {
            var mapper = new ItemLegendaryPotionMapper();

            return(GetItems(authenticationScope, mapper, "item-type/healthpotion"));
        }
Example #23
0
        public Task <ItemFollowerToken> GetFollowerTokenAsync(IAuthenticationScope authenticationScope, ItemId itemId)
        {
            var mapper = new ItemFollowerTokenMapper();

            return(GetItem(authenticationScope, mapper, itemId));
        }
Example #24
0
        public Task <IEnumerable <ItemFollowerToken> > GetFollowerTokensAsync(IAuthenticationScope authenticationScope)
        {
            var mapper = new ItemFollowerTokenMapper();

            return(GetItems(authenticationScope, mapper, _followerTokenIndices));
        }
Example #25
0
        public Task <IEnumerable <ItemEquipment> > GetEquipmentsAsync(IAuthenticationScope authenticationScope)
        {
            var mapper = new ItemEquipmentMapper();

            return(GetItems(authenticationScope, mapper, _equipmentIndices));
        }
Example #26
0
 public async Task SetupAsync()
 {
     DiabloApi           = DiabloApiFactory.CreateApi();
     AuthenticationScope = await DiabloApi.CreateAuthenticationScopeAsync();
 }
Example #27
0
        public Task <ItemEquipment> GetEquipmentAsync(IAuthenticationScope authenticationScope, ItemId itemId)
        {
            var mapper = new ItemEquipmentMapper();

            return(GetItem(authenticationScope, mapper, itemId));
        }