public static void EnsureExpiration(this IAuthenticationScope authenticationScope) { if (authenticationScope.IsExpired()) { throw new DiabloApiAuthenticationExpiredException(); } }
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)); }
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); }
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)); } }
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); }
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); }
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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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); }
public Task <IEnumerable <ItemLegendaryGem> > GetLegendaryGemsAsync(IAuthenticationScope authenticationScope) { var mapper = new ItemLegendaryGemMapper(); return(GetItems(authenticationScope, mapper, "item-type/upgradeablejewel")); }
public Task <IEnumerable <ItemGem> > GetGemsAsync(IAuthenticationScope authenticationScope) { var mapper = new ItemGemMapper(); return(GetItems(authenticationScope, mapper, "item-type/gem")); }
public Task <ItemLegendaryPotion> GetLegendaryPotionAsync(IAuthenticationScope authenticationScope, ItemId itemId) { var mapper = new ItemLegendaryPotionMapper(); return(GetItem(authenticationScope, mapper, itemId)); }
public Task <IEnumerable <ItemLegendaryPotion> > GetLegendaryPotionsAsync(IAuthenticationScope authenticationScope) { var mapper = new ItemLegendaryPotionMapper(); return(GetItems(authenticationScope, mapper, "item-type/healthpotion")); }
public Task <ItemFollowerToken> GetFollowerTokenAsync(IAuthenticationScope authenticationScope, ItemId itemId) { var mapper = new ItemFollowerTokenMapper(); return(GetItem(authenticationScope, mapper, itemId)); }
public Task <IEnumerable <ItemFollowerToken> > GetFollowerTokensAsync(IAuthenticationScope authenticationScope) { var mapper = new ItemFollowerTokenMapper(); return(GetItems(authenticationScope, mapper, _followerTokenIndices)); }
public Task <IEnumerable <ItemEquipment> > GetEquipmentsAsync(IAuthenticationScope authenticationScope) { var mapper = new ItemEquipmentMapper(); return(GetItems(authenticationScope, mapper, _equipmentIndices)); }
public async Task SetupAsync() { DiabloApi = DiabloApiFactory.CreateApi(); AuthenticationScope = await DiabloApi.CreateAuthenticationScopeAsync(); }
public Task <ItemEquipment> GetEquipmentAsync(IAuthenticationScope authenticationScope, ItemId itemId) { var mapper = new ItemEquipmentMapper(); return(GetItem(authenticationScope, mapper, itemId)); }