/// <summary>
        /// Sets the BattletNet API token if we don't have one for this instance.
        /// </summary>
        /// <returns></returns>
        public async Task SetToken()
        {
            if (string.IsNullOrEmpty(accessCode))
            {
                BattleNetToken token = await GetAccessToken();

                accessCode = token.access_token;
            }
        }
Example #2
0
        public void SetBattleNetdAuthorization(BattleNetToken token, string id)
        {
            User user = context.users.Where(u => u.DiscordID == id).FirstOrDefault();

            if (user != null)
            {
                DateTime now = DateTime.Now;

                user.BattleNetToken           = token.access_token;
                user.BattleNetTokenExpiration = now;
            }
        }
        /// <summary>
        /// Loads All users characters from the BattleNet API and stores them in the database.
        /// </summary>
        /// <param name="accessToken">users Access token for the BattleNet API</param>
        /// <param name="userId">users ID to link character to user</param>
        /// <returns></returns>
        public async Task <Task> SetCharactersFromBattleNet(BattleNetToken token, string userId)
        {
            await SetToken();

            var account = await warcraftClient.GetAccountProfileSummaryAsync(token.access_token, nameSpace);

            if (account.Success && account.Value.WowAccounts != null)
            {
                foreach (var wowAccount in account.Value.WowAccounts)
                {
                    foreach (var character in wowAccount.Characters)
                    {
                        if (character?.Id != null && character.Realm.Id == realmId && character.Faction.Name == guildFaction && character?.Level > 0)
                        {
                            try
                            {
                                var id           = character.Id;
                                var wowCharacter = context.wow_characters.Where(c => c.character_id == id).FirstOrDefault();
                                if (wowCharacter == null)
                                {
                                    wowCharacter = new WoWCharacter
                                    {
                                        name         = character.Name,
                                        realm        = character.Realm.Name,
                                        character_id = id,
                                        discord_id   = userId
                                    };
                                    context.Add(wowCharacter);
                                    context.SaveChanges();
                                }
                                else
                                {
                                    wowCharacter.name = character.Name;
                                }
                                await UpdateCharacter(wowCharacter);
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e);
                            }
                        }
                    }
                }
            }

            await SetGuildRanks(userId);

            return(Task.CompletedTask);
        }