Example #1
0
        public async Task GetPlayer()
        {
            var request = CommonRequest.GetPlayerMessageRequest();

            var serverRequest = GetRequestBuilder().GetRequestEnvelope(new[] { request });

            var serverResponse = await PostProto <Request>(serverRequest).ConfigureAwait(false);

            ParseServerResponse(serverResponse);

            if (serverResponse.StatusCode == ResponseEnvelope.Types.StatusCode.Redirect)
            {
                await GetPlayer().ConfigureAwait(false);

                return;
            }

            var responses = serverResponse.Returns;

            if (responses != null)
            {
                var getPlayerResponse = new GetPlayerResponse();
                if (responses.Count > 0)
                {
                    getPlayerResponse.MergeFrom(responses[0]);
                    CommonRequest.ProcessGetPlayerResponse(Client, getPlayerResponse);
                }
            }
        }
        /// <summary>
        /// Gets the player.
        /// </summary>
        /// <param name="accessToken">The access token.</param>
        /// <param name="playerId">The player identifier.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public async Task <GetPlayerResponse> GetPlayer(String accessToken,
                                                        Guid playerId,
                                                        CancellationToken cancellationToken)
        {
            GetPlayerResponse response = null;

            String requestUri = $"{this.BaseAddress}/api/players/{playerId}";

            try
            {
                // Add the access token to the client headers
                this.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

                // Make the Http Call here
                HttpResponseMessage httpResponse = await this.HttpClient.GetAsync(requestUri, cancellationToken);

                // Process the response
                String content = await this.HandleResponse(httpResponse, cancellationToken);

                // call was successful so now deserialise the body to the response object
                response = JsonConvert.DeserializeObject <GetPlayerResponse>(content);
            }
            catch (Exception ex)
            {
                // An exception has occurred, add some additional information to the message
                Exception exception = new Exception("Error getting player details.", ex);

                throw exception;
            }

            return(response);
        }
        private async Task loginPtc(string username, string password)
        {
            try
            {
                // Creating the Settings
                Logger.Write("Adjusting the Settings.");
                UserSettings.Default.AuthType    = AuthType.Ptc.ToString();
                UserSettings.Default.PtcUsername = username;
                UserSettings.Default.PtcPassword = password;
                this.settings = new Settings();

                // Begin Login
                Logger.Write("Trying to Login with PTC Credentials...");
                Client client = new Client(this.settings);
                await client.DoPtcLogin(this.settings.PtcUsername, this.settings.PtcPassword);

                await client.SetServer();

                // Server Ready
                Logger.Write("Connected! Server is Ready.");
                this.client = client;

                Logger.Write("Attempting to Retrieve Inventory and Player Profile...");
                this.inventory = new Inventory(client);
                this.profile   = await client.GetProfile();

                enableButtons();
            }
            catch
            {
                Logger.Write("Unable to Connect using the PTC Credentials.");
                MessageBox.Show("Unable to Authenticate with Login Server.", "Login Problem");
                Application.Exit();
            }
        }
Example #4
0
        public async ValueTask HandleAsync(Msg msg, CancellationToken cancellationToken)
        {
            var query = GetPlayerRequest.Parser.ParseFrom(msg.Data);

            var playerReg = await m_PlayerService.GetAsync(new GetPlayerBySessionIdQuery
            {
                SessionId = query.SessionId
            }).ConfigureAwait(false);


            var reply = new GetPlayerResponse();

            if (playerReg != null)
            {
                reply.Player = new PlayerInfo
                {
                    SessionId   = playerReg.SessionId,
                    ConnectorId = playerReg.ConnectorId,
                    Name        = playerReg.Name
                };

                await m_MessageQueueService.PublishAsync(msg.Reply, reply.ToByteArray()).ConfigureAwait(false);
            }
            else
            {
                reply.Player = null;

                await m_MessageQueueService.PublishAsync(msg.Reply, reply.ToByteArray()).ConfigureAwait(false);
            }
        }
Example #5
0
        private async void Execute()
        {
            await check();

            try
            {
                var client = Logic.Logic._client;
                if (client.readyToUse != false)
                {
                    profile = await client.Player.GetPlayer();

                    await Task.Delay(1000); // Pause to simulate human speed.

                    Text = "User: "******"[PokemonList-Error] " + e.StackTrace);
                await Task.Delay(1000); // Lets the API make a little pause, so we dont get blocked

                Execute();
            }
        }
 public void Execute(GetPlayerResponse prof, IOrderedEnumerable <PokemonData> poks)
 {
     profile  = prof;
     pokemons = poks;
     updatePlayerImages();
     updatePlayerInfoLabels();
 }
        private async Task loginGoogle()
        {
            try
            {
                // Creating the Settings
                Logger.Write("Adjusting the Settings.");
                UserSettings.Default.AuthType = AuthType.Google.ToString();
                this.settings = new Settings();

                // Begin Login
                Logger.Write("Trying to Login with Google Token...");
                Client client = new Client(this.settings);
                await client.DoGoogleLogin();

                await client.SetServer();

                // Server Ready
                Logger.Write("Connected! Server is Ready.");
                this.client = client;

                Logger.Write("Attempting to Retrieve Inventory and Player Profile...");
                this.inventory = new Inventory(client);
                this.profile   = await client.GetProfile();

                enableButtons();
            }
            catch
            {
                Logger.Write("Unable to Connect using the Google Token.");
                MessageBox.Show("Unable to Authenticate with Login Server.", "Login Problem");
                Application.Exit();
            }
        }
Example #8
0
        public async Task PlayerController_GET_GetPlayer_WithMemberships_PlayerIsReturned()
        {
            // 1. Arrange
            HttpClient client = this.WebApplicationFactory.AddPlayer().CreateClient();

            String uri = $"api/players/{TestData.PlayerId}?includeMemberships=true";

            client.DefaultRequestHeaders.Add("api-version", "2.0");
            // 2. Act
            HttpResponseMessage response = await client.GetAsync(uri, CancellationToken.None);

            // 3. Assert
            response.StatusCode.ShouldBe(HttpStatusCode.OK);

            String responseAsJson = await response.Content.ReadAsStringAsync();

            responseAsJson.ShouldNotBeNullOrEmpty();

            GetPlayerResponse responseObject = JsonConvert.DeserializeObject <GetPlayerResponse>(responseAsJson);

            responseObject.ShouldNotBeNull();
            responseObject.Id.ShouldBe(TestData.PlayerId);
            responseObject.ClubMemberships.ShouldNotBeNull();
            responseObject.ClubMemberships.ShouldNotBeEmpty();
            responseObject.SignedUpTournaments.ShouldBeNull();
        }
Example #9
0
        public async void Execute(bool refreshData = true)
        {
            pictureBoxTeam.Image         = null;
            pictureBoxPlayerAvatar.Image = null;
            pictureBoxBuddyPokemon.Image = null;
            labelUserProperty1Value.Text = "";
            labelUserProperty2Value.Text = "";
            labelUserProperty3Value.Text = "";
            labelUserProperty4Value.Text = "";
            labelUserProperty5Value.Text = "";
            labelUserProperty6Value.Text = "";

            await check();

            var client = Logic.Logic.Client;

            if (client.readyToUse != false)
            {
                /*labelUserProperty1Title.Text = "Username:";  TODO: internationalize*/

                if (refreshData)
                {
                    profile = await client.Player.GetPlayer();

                    await Task.Delay(1000); // Pause to simulate human speed.

                    var playerStats = await client.Inventory.GetPlayerStats();

                    stats = playerStats.First();
                }
                updatePlayerImages();
                updatePlayerInfoLabels();
            }
        }
Example #10
0
        public async Task <GetPlayerResponse> GetCachedProfile(bool request = false)
        {
            var now = DateTime.Now;
            var ss  = new SemaphoreSlim(10);

            if (_lastRefresh.AddSeconds(30).Ticks > now.Ticks && request == false)
            {
                return(_cachedProfile);
            }

            await ss.WaitAsync();

            try
            {
                _lastRefresh = now;
                try
                {
                    _cachedProfile = await GetProfile();
                }
                catch
                {
                }
            }
            finally
            {
                ss.Release();
            }
            return(_cachedProfile);
        }
Example #11
0
        public void Execute(bool refreshData = true)
        {
            pictureBoxTeam.Image         = null;
            pictureBoxPlayerAvatar.Image = null;
            pictureBoxBuddyPokemon.Image = null;
            foreach (ListViewItem element in listView.Items)
            {
                element.SubItems[2].Text = "";
            }

            var client = Logic.Logic.objClient;

            if (client != null && client.ReadyToUse)
            {
                if (refreshData)
                {
                    profile = client.Player.GetPlayer();
                    RandomHelper.RandomSleep(300, 400);
                    var playerStats = client.Inventory.GetPlayerStats();
                    stats = playerStats.First();
                }
                updatePlayerImages();
                updatePlayerInfoLabels();
            }
            labelPokemons.Text  = "" + Logic.Functions.Setout.pokemonCatchCount;
            labelPokestops.Text = "" + Logic.Functions.Setout.pokeStopFarmedCount;
            labelTimeLeft.Text  = "" + Logic.Functions.Setout.timeLeftToNextLevel;
        }
Example #12
0
        public void Execute(bool refreshData = true)
        {
            pictureBoxTeam.Image         = null;
            pictureBoxPlayerAvatar.Image = null;
            pictureBoxBuddyPokemon.Image = null;
            foreach (ListViewItem element in listView.Items)
            {
                element.SubItems[2].Text = "";
            }

            var client = Logic.Logic.objClient;

            if (client != null && client.ReadyToUse)
            {
                if (refreshData)
                {
                    profile = client.Player.GetPlayer().Result;
                    RandomHelper.RandomSleep(300, 400);
                    var playerStats = client.Inventory.GetPlayerStats().Result;
                    stats = playerStats.First();
                }
                updatePlayerImages();
                updatePlayerInfoLabels();
            }
        }
Example #13
0
        public async Task <IActionResult> GetPlayer([FromRoute] Guid playerId,
                                                    [FromQuery] Boolean includeMemberships,
                                                    [FromQuery] Boolean includeTournamentSignups,
                                                    CancellationToken cancellationToken)
        {
            // Get the Player Id claim from the user
            Claim playerIdClaim = ClaimsHelper.GetUserClaim(this.User, CustomClaims.PlayerId, playerId.ToString());

            Boolean validationResult = ClaimsHelper.ValidateRouteParameter(playerId, playerIdClaim);

            if (validationResult == false)
            {
                return(this.Forbid());
            }

            GetPlayerDetailsResponse playerDetails = await this.Manager.GetPlayerDetails(Guid.Parse(playerIdClaim.Value), cancellationToken);

            List <ClubMembershipResponse> membershipList = null;

            if (includeMemberships)
            {
                membershipList = await this.Manager.GetPlayersClubMemberships(Guid.Parse(playerIdClaim.Value), cancellationToken);
            }

            PlayerSignedUpTournamentsResponse signedUpTournaments = null;

            if (includeTournamentSignups)
            {
                signedUpTournaments = await this.Manager.GetPlayerSignedUpTournaments(Guid.Parse(playerIdClaim.Value), cancellationToken);
            }

            GetPlayerResponse playerResponse = this.ConvertGetPlayerDetailsResponse(playerId, playerDetails, membershipList, signedUpTournaments);

            return(this.Ok(playerResponse));
        }
        public async Task PostLoginExecute()
        {
            while (true)
            {
                _playerProfile = await _client.GetProfile();
                await DisplayPlayerLevelInTitle();

                if (_clientSettings.EvolveAllPokemonWithEnoughCandy)
                {
                    await EvolveAllPokemonWithEnoughCandy(_clientSettings.PokemonsToEvolve);
                }
                if (_clientSettings.TransferDuplicatePokemon)
                {
                    await TransferDuplicatePokemon();
                }
                await DisplayHighests();
                await RecycleItems();
                await ExecuteFarmingPokestopsAndPokemons();

                /*
                 * Example calls below
                 *
                 * var profile = await _client.GetProfile();
                 * var settings = await _client.GetSettings();
                 * var mapObjects = await _client.GetMapObjects();
                 * var inventory = await _client.GetInventory();
                 * var pokemons = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon).Where(p => p != null && p?.PokemonId > 0);
                 */

                await Task.Delay(10000);
            }
        }
        private async Task DisplayPlayerLevelInTitle(bool updateOnly = false)
        {
            _playerProfile = _playerProfile.Profile != null ? _playerProfile : await _client.GetProfile();

            var playerName  = _playerProfile.Profile.Username ?? "";
            var playerStats = await _inventory.GetPlayerStats();

            var playerStat = playerStats.FirstOrDefault();

            if (playerStat != null)
            {
                var xpDifference = GetXPDiff(playerStat.Level);
                var message      =
                    $"{playerName} | Level {playerStat.Level}: {playerStat.Experience - playerStat.PrevLevelXp - xpDifference}/{playerStat.NextLevelXp - playerStat.PrevLevelXp - xpDifference}XP";
                Console.Title = message;
                if (updateOnly == false)
                {
                    Logger.Write(message);
                }
            }
            if (updateOnly == false)
            {
                await Task.Delay(5000);
            }
        }
Example #16
0
 private void Execute()
 {
     try {
         var client = Logic.Logic.objClient;
         if (!skipReadyToUse)
         {
             // Wait to client is ready to use
             while (client == null || !client.ReadyToUse)
             {
                 Logger.Debug("Client not ready to use. Waiting 5 seconds to retry");
                 RandomHelper.RandomSleep(5000, 5100);
                 client = Logic.Logic.objClient;
             }
             profile = client.Player.GetPlayer();
             RandomHelper.RandomSleep(1000, 1100); // Pause to simulate human speed.
             Text = "User: "******"[PokemonList-Error] " + e.StackTrace);
         RandomHelper.RandomSleep(1000, 1100);  // Lets the API make a little pause, so we dont get blocked
     }
 }
Example #17
0
        public void PostLoginExecute()
        {
            try
            {
                //update user location on map
                Task.Factory.StartNew(() => Logic.Instance.infoObservable.PushNewGeoLocations(new GeoCoordinate(GlobalVars.latitude, GlobalVars.longitude)));
                GetPlayerResponse profil = objClient.Player.GetPlayer();
                objClient.Inventory.ExportPokemonToCSV(profil.PlayerData);
                Setout.Execute();
                ExecuteFarmingPokestopsAndPokemons(objClient);
            }
            catch (AccessTokenExpiredException)
            {
                throw new AccessTokenExpiredException();
            }
            catch (Exception ex)
            {
                Logger.Error($"Exception: {ex}");

                if (BotSettings.RelocateDefaultLocation)
                {
                    Logger.Info("Detected User Request to Relocate to a new farming spot!");
                }
            }
        }
Example #18
0
 public async Task <GetPlayerResponse> GetPlayerData()
 {
     if (_player == null)
     {
         _player = await _client.Player.GetPlayer().ConfigureAwait(false);
     }
     return(_player);
 }
Example #19
0
 public async Task <IEnumerable <InventoryItem> > GetCachedInventory()
 {
     if (_player == null)
     {
         _player = await GetPlayerData().ConfigureAwait(false);
     }
     return(_client.Inventory.InventoryItems.Select(kvp => kvp.Value));
 }
Example #20
0
 public GetPlayerResponse GetPlayer(bool forceRequest = true)
 {
     if (forceRequest)
     {
         PlayerResponse = PostProtoPayloadCommonR <Request, GetPlayerResponse>(RequestType.GetPlayer, CommonRequest.GetPlayerMessageRequest(LocaleInfo.Country, LocaleInfo.Language, LocaleInfo.TimeZone)).Result;
     }
     return(PlayerResponse);
 }
Example #21
0
        public async Task <GetPlayerResponse> GetPlayer(bool addCommonRequests = true, bool addChallengeRequests = false)
        {
            var getPlayerRequest = new Request
            {
                RequestType    = RequestType.GetPlayer,
                RequestMessage = new GetPlayerMessage().ToByteString()
            };

            if (addCommonRequests)
            {
                var requestEnvelope = await GetRequestBuilder().GetRequestEnvelope(CommonRequest.FillRequest(getPlayerRequest, Client)).ConfigureAwait(false);

                Tuple <GetPlayerResponse, CheckChallengeResponse, GetHatchedEggsResponse, GetInventoryResponse, CheckAwardedBadgesResponse, DownloadSettingsResponse, GetBuddyWalkedResponse> response =
                    await
                    PostProtoPayload
                    <Request, GetPlayerResponse, CheckChallengeResponse, GetHatchedEggsResponse, GetInventoryResponse,
                     CheckAwardedBadgesResponse, DownloadSettingsResponse, GetBuddyWalkedResponse>(requestEnvelope).ConfigureAwait(false);

                GetPlayerResponse getPlayerResponse = response.Item1;
                CommonRequest.ProcessGetPlayerResponse(Client, getPlayerResponse);

                CheckChallengeResponse checkChallengeResponse = response.Item2;
                CommonRequest.ProcessCheckChallengeResponse(Client, checkChallengeResponse);

                GetInventoryResponse getInventoryResponse = response.Item4;
                CommonRequest.ProcessGetInventoryResponse(Client, getInventoryResponse);

                DownloadSettingsResponse downloadSettingsResponse = response.Item6;
                CommonRequest.ProcessDownloadSettingsResponse(Client, downloadSettingsResponse);

                return(response.Item1);
            }
            if (addChallengeRequests)
            {
                var challengeRequest = new Request
                {
                    RequestType    = RequestType.CheckChallenge,
                    RequestMessage = new CheckChallengeMessage().ToByteString()
                };
                var requestEnvelope = await GetRequestBuilder().GetRequestEnvelope(new Request[] { getPlayerRequest, challengeRequest }).ConfigureAwait(false);

                Tuple <GetPlayerResponse, CheckChallengeResponse> response = await PostProtoPayload <Request, GetPlayerResponse, CheckChallengeResponse>(requestEnvelope).ConfigureAwait(false);

                CommonRequest.ProcessGetPlayerResponse(Client, response.Item1);

                return(response.Item1);
            }
            else
            {
                var requestEnvelope = await GetRequestBuilder().GetRequestEnvelope(new Request[] { getPlayerRequest }).ConfigureAwait(false);

                GetPlayerResponse getPlayerResponse = await PostProtoPayload <Request, GetPlayerResponse>(requestEnvelope).ConfigureAwait(false);

                CommonRequest.ProcessGetPlayerResponse(Client, getPlayerResponse);

                return(getPlayerResponse);
            }
        }
Example #22
0
        public IEnumerable <InventoryItem> GetCachedInventory()
        {
            if (_player == null)
            {
                _player = GetPlayerData().Result;
            }

            return(_client.Inventory.InventoryItems.Select(kvp => kvp.Value));
        }
Example #23
0
        public async Task ThenTheNewExactHandicapForPlayerNumberIsAdjustedTo(String playerNumber, Decimal exactHandicap)
        {
            RegisterPlayerResponse registerPlayerResponse = this.TestingContext.GetRegisterPlayerResponse(playerNumber);

            GetPlayerResponse player = await this.TestingContext.DockerHelper.PlayerClient.GetPlayer(this.TestingContext.PlayerToken,
                                                                                                     registerPlayerResponse.PlayerId, CancellationToken.None).ConfigureAwait(false);

            player.ExactHandicap.ShouldBe(exactHandicap);
        }
Example #24
0
        internal void OnProfileUpdate(ProfileEvent profile)
        {
            var stats = profile.Stats;

            Exp      = stats.FirstOrDefault(x => x.Experience > 0).Experience;
            LevelExp = stats.FirstOrDefault(x => x.NextLevelXp > 0).NextLevelXp;

            this.playerProfile = profile.Profile;
        }
Example #25
0
 private void PlayerReceived(object sender, GetPlayerResponse e)
 {
     if (e.Success && e.PlayerData != null)
     {
         Profile = e.PlayerData;
         //ApiClient.Download.QueueDownloadRemoteConfigVersionRequest();
         //ApiClient.Download.QueueGetAssetDigestRequest();
         //ApiClient.Player.QueueGetLevelUpRewardsRequest();
     }
 }
Example #26
0
        public async Task <MethodResult> GetPlayer()
        {
            try
            {
                if (!_client.LoggedIn)
                {
                    MethodResult result = await Login();

                    if (!result.Success)
                    {
                        return(result);
                    }
                }

                var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
                {
                    RequestType    = RequestType.GetPlayer,
                    RequestMessage = new GetPlayerMessage
                    {
                        PlayerLocale = _client.LocaleInfo.PlayerLocale()
                    }.ToByteString()
                });

                GetPlayerResponse getPlayerResponse = null;

                try
                {
                    getPlayerResponse = GetPlayerResponse.Parser.ParseFrom(response);
                    PlayerData        = getPlayerResponse.PlayerData;
                    return(new MethodResult
                    {
                        Success = true
                    });
                }
                catch (Exception ex)
                {
                    if (response.IsEmpty)
                    {
                        LogCaller(new LoggerEventArgs("Failed to get player stats", LoggerTypes.Exception, ex));
                    }

                    return(new MethodResult());
                }
            }
            catch (Exception ex)
            {
                LogCaller(new LoggerEventArgs("Failed to get player stats", LoggerTypes.Exception, ex));

                return(new MethodResult
                {
                    Message = "Failed to get player stats"
                });
            }
        }
Example #27
0
    public void GetPlayerGhosts(GetGhostsParams Params, Action <GetPlayerGhostsResult> callback)
    {
        string URL  = GetURL() + "/requests/get_all_player_ghosts.php";
        string json = JsonUtility.ToJson(Params, true);

        StartCoroutine(SendGETRequest(URL, json, (string Result) =>
        {
            GetPlayerResponse Response = JsonUtility.FromJson <GetPlayerResponse>(Result);
            callback(Response != null ? Response.body : new GetPlayerGhostsResult());
        }));
    }
Example #28
0
        public async Task <GetInventoryResponse> GetCachedInventory()
        {
            lock (_player)
            {
                if (_player == null)
                {
                    _player = GetPlayerData().Result;
                }
            }

            return(_cachedInventory);
        }
Example #29
0
        public async void GetPlayerData()
        {
            for (int i = 0; i < 3; i++)
            {
                _player = await _client.Player.GetPlayer();

                if (_player != null)
                {
                    break;
                }
            }
        }
        public async Task <IActionResult> GetPlayer([FromRoute] Guid playerId,
                                                    [FromQuery] Boolean includeMemberships,
                                                    CancellationToken cancellationToken)
        {
            PlayerAggregate player = await this.PlayerRepository.GetLatestVersion(playerId, cancellationToken);

            if (!player.HasBeenRegistered)
            {
                return(this.NotFound($"Player not found with Id {playerId}"));
            }

            GetPlayerResponse playerResponse = new GetPlayerResponse
            {
                DateOfBirth       = player.DateOfBirth,
                EmailAddress      = player.EmailAddress,
                HasBeenRegistered = player.HasBeenRegistered,
                ExactHandicap     = player.ExactHandicap,
                FirstName         = player.FirstName,
                FullName          = player.FullName,
                Gender            = player.Gender,
                HandicapCategory  = player.HandicapCategory,
                LastName          = player.LastName,
                MiddleName        = player.MiddleName,
                PlayingHandicap   = player.PlayingHandicap,
                SecurityUserId    = player.SecurityUserId
            };

            if (includeMemberships)
            {
                List <ClubMembershipResponse> playerMemberships = await this.Manager.GetPlayersClubMemberships(playerId, cancellationToken);

                if (playerMemberships != null && playerMemberships.Count != 0)
                {
                    playerMemberships.ForEach(p =>
                    {
                        playerResponse.ClubMemberships.Add(new PlayerClubMembership
                        {
                            MembershipId     = p.MembershipId,
                            Status           = p.Status.ConvertTo <MembershipStatus>(),
                            MembershipNumber = p.MembershipNumber,
                            RejectionReason  = p.RejectionReason,
                            AcceptedDateTime = p.AcceptedDateTime,
                            GolfClubId       = p.GolfClubId,
                            GolfClubName     = p.GolfClubName,
                            RejectedDateTime = p.RejectedDateTime
                        });
                    });
                }
            }

            return(this.Ok(playerResponse));
        }
Example #31
0
 private async Task DisplayPlayerLevelInTitle()
 {
     _playerProfile = _playerProfile.Profile != null ? _playerProfile : await _client.GetProfile();
     var playerName = _playerProfile.Profile.Username != null ? _playerProfile.Profile.Username : "";
     var playerStats = await _inventory.GetPlayerStats();
     var playerStat = playerStats.FirstOrDefault();
     if (playerStat != null)
     {
         var message =
             $"Character Level {playerName} {playerStat.Level:0} - ({playerStat.Experience - playerStat.PrevLevelXp:0} / {playerStat.NextLevelXp - playerStat.PrevLevelXp:0} XP)";
         Console.Title = message;
         Logger.Write(message);
     }
     await Task.Delay(5000);
 }
Example #32
0
 private async Task DisplayPlayerLevelInTitle(bool updateOnly = false)
 {
     _playerProfile = _playerProfile.Profile != null ? _playerProfile : await _client.GetProfile();
     var playerName = _playerProfile.Profile.Username ?? "";
     var playerStats = await _inventory.GetPlayerStats();
     var playerStat = playerStats.FirstOrDefault();
     if (playerStat != null)
     {
         var xpDifference = GetXPDiff(playerStat.Level);
         var message =
             $"{playerName} | Level {playerStat.Level}: {playerStat.Experience - playerStat.PrevLevelXp - xpDifference}/{playerStat.NextLevelXp - playerStat.PrevLevelXp - xpDifference}XP";
         Console.Title = message;
         if (updateOnly == false)
             Logger.Write(message);
     }
     if (updateOnly == false)
         await Task.Delay(5000);
 }
        private async Task loginPtc(string username, string password)
        {
            try
            {
                // Creating the Settings
                Logger.Write("Adjusting the Settings.");
                UserSettings.Default.AuthType = AuthType.Ptc.ToString();
                UserSettings.Default.PtcUsername = username;
                UserSettings.Default.PtcPassword = password;
                this.settings = new Settings();

                // Begin Login
                Logger.Write("Trying to Login with PTC Credentials...");
                Client client = new Client(this.settings);
                await client.DoPtcLogin(this.settings.PtcUsername, this.settings.PtcPassword);
                await client.SetServer();

                // Server Ready
                Logger.Write("Connected! Server is Ready.");
                this.client = client;

                Logger.Write("Attempting to Retrieve Inventory and Player Profile...");
                this.inventory = new Inventory(client);
                this.profile = await client.GetProfile();
                enableButtons();
            }         
            catch
            {
                Logger.Write("Unable to Connect using the PTC Credentials.");
                MessageBox.Show("Unable to Authenticate with Login Server.", "Login Problem");
                Application.Exit();
            }
        }
Example #34
0
        public async Task PostLoginExecute()
        {
            while (true)
            {
                _playerProfile = await _client.GetProfile();
                await DisplayPlayerLevelInTitle();
                if (_clientSettings.EvolveAllPokemonWithEnoughCandy)
                    await EvolveAllPokemonWithEnoughCandy(_clientSettings.PokemonsToEvolve);
                if (_clientSettings.TransferDuplicatePokemon) await TransferDuplicatePokemon();
                await DisplayHighests();
                await RecycleItems();
                await ExecuteFarmingPokestopsAndPokemons();

                /*
            * Example calls below
            *
            var profile = await _client.GetProfile();
            var settings = await _client.GetSettings();
            var mapObjects = await _client.GetMapObjects();
            var inventory = await _client.GetInventory();
            var pokemons = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon).Where(p => p != null && p?.PokemonId > 0);
            */

                await Task.Delay(10000);
            }
        }
Example #35
0
        private async void Execute()
        {
            EnabledButton(false);
            textBox1.Text = "Reloading Pokemon list.";

            client = new Client(ClientSettings);

            try
            {
                switch (ClientSettings.AuthType)
                {
                    case AuthType.Ptc:
                        await client.DoPtcLogin(ClientSettings.PtcUsername, ClientSettings.PtcPassword);
                        break;
                    case AuthType.Google:
                        await client.DoGoogleLogin();
                        break;
                }

                await client.SetServer();
                profile = await client.GetProfile();
                inventory = await client.GetInventory();
                pokemons =
                    inventory.InventoryDelta.InventoryItems
                    .Select(i => i.InventoryItemData?.Pokemon)
                        .Where(p => p != null && p?.PokemonId > 0)
                        .OrderByDescending(key => key.Cp);
                var families = inventory.InventoryDelta.InventoryItems
                    .Select(i => i.InventoryItemData?.PokemonFamily)
                    .Where(p => p != null && (int)p?.FamilyId > 0)
                    .OrderByDescending(p => (int)p.FamilyId);

                var imageSize = 50;

                var imageList = new ImageList { ImageSize = new Size(imageSize, imageSize) };
                listView1.ShowItemToolTips = true;
                listView1.SmallImageList = imageList;

                var templates = await client.GetItemTemplates();
                var myPokemonSettings = templates.ItemTemplates.Select(i => i.PokemonSettings).Where(p => p != null && p?.FamilyId != PokemonFamilyId.FamilyUnset);
                var pokemonSettings = myPokemonSettings.ToList();

                var myPokemonFamilies = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PokemonFamily).Where(p => p != null && p?.FamilyId != PokemonFamilyId.FamilyUnset);
                var pokemonFamilies = myPokemonFamilies.ToArray();

                listView1.DoubleBuffered(true);
                listView1.View = View.Details;

                ColumnHeader columnheader;
                columnheader = new ColumnHeader();
                columnheader.Text = "Name";
                listView1.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "CP";
                listView1.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "IV A-D-S";
                listView1.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "Candy";
                listView1.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "Evolvable?";
                listView1.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "Height";
                listView1.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "Weight";
                listView1.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "Attack";
                listView1.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "SpecialAttack";
                listView1.Columns.Add(columnheader);

                foreach (var pokemon in pokemons)
                {
                    Bitmap pokemonImage = null;
                    await Task.Run(() =>
                    {
                        pokemonImage = GetPokemonImage((int)pokemon.PokemonId);
                    });
                    imageList.Images.Add(pokemon.PokemonId.ToString(), pokemonImage);

                    listView1.LargeImageList = imageList;
                    var listViewItem = new ListViewItem();
                    listViewItem.Tag = pokemon;



                    var currentCandy = families
                        .Where(i => (int)i.FamilyId <= (int)pokemon.PokemonId)
                        .Select(f => f.Candy)
                        .First();
                    var currIv = Math.Round(Perfect(pokemon));
                    listViewItem.SubItems.Add(string.Format("{0}", pokemon.Cp));
                    listViewItem.SubItems.Add(string.Format("{0}% {1}-{2}-{3}", currIv, pokemon.IndividualAttack, pokemon.IndividualDefense, pokemon.IndividualStamina));
                    listViewItem.SubItems.Add(string.Format("{0}", currentCandy));
                    listViewItem.ImageKey = pokemon.PokemonId.ToString();

                    var pokemonId2 = pokemon.PokemonId;
                    var pokemonName = pokemon.Id;

                    listViewItem.Text = string.Format("{0}", pokemon.PokemonId);
                    listViewItem.ToolTipText = "Favorite: " + pokemon.Favorite + "\nNickname: " + pokemon.Nickname;

                    var settings = pokemonSettings.Single(x => x.PokemonId == pokemon.PokemonId);
                    var familyCandy = pokemonFamilies.Single(x => settings.FamilyId == x.FamilyId);

                    if (settings.EvolutionIds.Count > 0 && familyCandy.Candy > settings.CandyToEvolve)
                    {
                        listViewItem.SubItems.Add("Y ("+ settings.CandyToEvolve+")");
                        listViewItem.Checked = true;
                    }
                    else
                    {
                        if (settings.EvolutionIds.Count > 0)
                            listViewItem.SubItems.Add("N (" + familyCandy.Candy + "/" + settings.CandyToEvolve + ")");
                        else
                            listViewItem.SubItems.Add("N (Max)");
                    }
                    listViewItem.SubItems.Add(string.Format("{0}", Math.Round(pokemon.HeightM, 2)));
                    listViewItem.SubItems.Add(string.Format("{0}", Math.Round(pokemon.WeightKg,2)));
                    listViewItem.SubItems.Add(string.Format("{0}", pokemon.Move1));
                    listViewItem.SubItems.Add(string.Format("{0}", pokemon.Move2));

                    listView1.Items.Add(listViewItem);
                }
                listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
                Text = "Pokemon List | User: "******" | Pokemons: " + pokemons.Count() + "/" + profile.Profile.PokeStorage;
                EnabledButton(true);

                textBox1.Text = string.Empty;
            }
            catch (TaskCanceledException e)
            {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (UriFormatException e)
            {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (ArgumentOutOfRangeException e)
            {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (ArgumentNullException e)
            {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (NullReferenceException e)
            {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (Exception e)
            {
                textBox1.Text = e.Message;
                Execute();
            }
        }
Example #36
0
 public void SetUsername(GetPlayerResponse profile)
 {
     _playerName = profile.PlayerData.Username ?? "";
 }
Example #37
0
        public async Task PostLoginExecute()
        {
            while (true)
            {
                try
                {
                    _playerProfile = await _client.GetProfile();
                    await DisplayPlayerLevelInTitle();
                    if (_clientSettings.EvolveAllPokemonWithEnoughCandy)
                        await EvolveAllPokemonWithEnoughCandy(_clientSettings.PokemonsToEvolve);
                    if (_clientSettings.TransferDuplicatePokemon) await TransferDuplicatePokemon();
                    await RecycleItems();
                    await ExecuteFarmingPokestopsAndPokemons();

                    /*
            * Example calls below
            *
            var profile = await _client.GetProfile();
            var settings = await _client.GetSettings();
            var mapObjects = await _client.GetMapObjects();
            var inventory = await _client.GetInventory();
            var pokemons = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon).Where(p => p != null && p?.PokemonId > 0);
            */
                }
                catch (AccessTokenExpiredException)
                {
                    throw;
                }
                catch (Exception ex)
                {
                    Logger.Write($"Exception: {ex}", LogLevel.Error);
                }

                await Task.Delay(10000);
            }
        }
Example #38
0
        private void WriteConnectLogs(GetPlayerResponse profile)
        {
            ColoredConsoleWrite(Color.Yellow, "----------------------------");
            /*// dont actually want to display info but keeping here incase people want to \O_O/
             * if (ClientSettings.AuthType == AuthType.Ptc)
            {
                ColoredConsoleWrite(Color.Cyan, "Account: " + ClientSettings.PtcUsername);
                ColoredConsoleWrite(Color.Cyan, "Password: "******"\n");
            }
            else
            {
                ColoredConsoleWrite(Color.Cyan, "Email: " + ClientSettings.Email);
                ColoredConsoleWrite(Color.Cyan, "Password: "******"\n");
            }*/
            ColoredConsoleWrite(Color.DarkGray, "Name: " + profile.Profile.Username);
            ColoredConsoleWrite(Color.DarkGray, "Team: " + profile.Profile.Team);
            if (profile.Profile.Currency.ToArray()[0].Amount > 0) // If player has any pokecoins it will show how many they have.
                ColoredConsoleWrite(Color.DarkGray, "Pokecoins: " + profile.Profile.Currency.ToArray()[0].Amount);
            ColoredConsoleWrite(Color.DarkGray, "Stardust: " + profile.Profile.Currency.ToArray()[1].Amount + "\n");
            ColoredConsoleWrite(Color.DarkGray, "Latitude: " + ClientSettings.DefaultLatitude);
            ColoredConsoleWrite(Color.DarkGray, "Longitude: " + ClientSettings.DefaultLongitude);
            try
            {
                ColoredConsoleWrite(Color.DarkGray, "Country: " + CallAPI("country", ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude));
                ColoredConsoleWrite(Color.DarkGray, "Area: " + CallAPI("place", ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude));
            }
            catch (Exception)
            {
                ColoredConsoleWrite(Color.DarkGray, "Unable to get Country/Place");
            }

            ColoredConsoleWrite(Color.Yellow, "----------------------------");
        }
Example #39
0
 public void SetUsername(GetPlayerResponse profile)
 {
     PlayerName = profile.Profile.Username ?? "";
 }
        private async Task loginGoogle()
        {
            try
            {
                // Creating the Settings
                Logger.Write("Adjusting the Settings.");
                UserSettings.Default.AuthType = AuthType.Google.ToString();
                this.settings = new Settings();

                // Begin Login
                Logger.Write("Trying to Login with Google Token...");
                Client client = new Client(this.settings);
                await client.DoGoogleLogin();
                await client.SetServer();

                // Server Ready
                Logger.Write("Connected! Server is Ready.");
                this.client = client;

                Logger.Write("Attempting to Retrieve Inventory and Player Profile...");
                this.inventory = new Inventory(client);
                this.profile = await client.GetProfile();
                enableButtons();
            }
            catch
            {
                Logger.Write("Unable to Connect using the Google Token.");
                MessageBox.Show("Unable to Authenticate with Login Server.", "Login Problem");
                Application.Exit();
            }
        }
Example #41
0
        public async Task PostLoginExecute()
        {
            Logger.Write($"Client logged in", LogLevel.Info);

            while (true)
            {
                if (!IsInitialized)
                {
                    await Inventory.getCachedInventory(_client);
                    _playerProfile = await _client.GetProfile();
                    var PlayerName = Statistics.GetUsername(_client, _playerProfile);
                    _stats.UpdateConsoleTitle(_client, _inventory);
                    var _currentLevelInfos = await Statistics._getcurrentLevelInfos(_inventory);

                    Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);
                    if (_clientSettings.AuthType == AuthType.Ptc)
                        Logger.Write($"PTC Account: {PlayerName}\n", LogLevel.None, ConsoleColor.Cyan);
                    Logger.Write($"Latitude: {_clientSettings.DefaultLatitude}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write($"Longitude: {_clientSettings.DefaultLongitude}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);
                    Logger.Write("Your Account:\n");
                    Logger.Write($"Name: {PlayerName}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write($"Team: {_playerProfile.Profile.Team}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write($"Level: {_currentLevelInfos}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write($"Stardust: {_playerProfile.Profile.Currency.ToArray()[1].Amount}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);
                    await DisplayHighests();
                    Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);

                    var PokemonsNotToTransfer = _clientSettings.PokemonsNotToTransfer;
                    var PokemonsNotToCatch = _clientSettings.PokemonsNotToCatch;
                    var PokemonsToEvolve = _clientSettings.PokemonsToEvolve;

                    if (_clientSettings.EvolvePokemon || _clientSettings.EvolveOnlyPokemonAboveIV) await EvolvePokemon(_clientSettings.PokemonsToEvolve);
                    if (_clientSettings.TransferPokemon) await TransferPokemon();
                    await _inventory.ExportPokemonToCSV(_playerProfile.Profile);
                    await RecycleItems();
                }
                IsInitialized = true;
                await ExecuteFarmingPokestopsAndPokemons(_clientSettings.UseGPXPathing);

                /*
                * Example calls below
                *
                var profile = await _client.GetProfile();
                var settings = await _client.GetSettings();
                var mapObjects = await _client.GetMapObjects();
                var inventory = await _client.GetInventory();
                var pokemons = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon).Where(p => p != null && p?.PokemonId > 0);
                */

                await Task.Delay(10000);
            }
        }
Example #42
0
        private async void Execute()
        {
            EnabledButton(false, "Reloading Pokemon list.");

            client = new Client(ClientSettings);

            try
            {
                switch (ClientSettings.AuthType)
                {
                    case AuthType.Ptc:
                        await client.DoPtcLogin(ClientSettings.PtcUsername, ClientSettings.PtcPassword);
                        break;
                    case AuthType.Google:
                        await client.DoGoogleLogin();
                        break;
                }

                await client.SetServer();
                profile = await client.GetProfile();
                inventory = await client.GetInventory();
                pokemons =
                    inventory.InventoryDelta.InventoryItems
                    .Select(i => i.InventoryItemData?.Pokemon)
                        .Where(p => p != null && p?.PokemonId > 0)
                        .OrderByDescending(key => key.Cp);
                var families = inventory.InventoryDelta.InventoryItems
                    .Select(i => i.InventoryItemData?.PokemonFamily)
                    .Where(p => p != null && (int)p?.FamilyId > 0)
                    .OrderByDescending(p => (int)p.FamilyId);

                var imageSize = 50;

                var imageList = new ImageList { ImageSize = new Size(imageSize, imageSize) };
                PokemonListView.ShowItemToolTips = true;
                PokemonListView.SmallImageList = imageList;

                var templates = await client.GetItemTemplates();
                var myPokemonSettings = templates.ItemTemplates.Select(i => i.PokemonSettings).Where(p => p != null && p?.FamilyId != PokemonFamilyId.FamilyUnset);
                var pokemonSettings = myPokemonSettings.ToList();

                var myPokemonFamilies = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PokemonFamily).Where(p => p != null && p?.FamilyId != PokemonFamilyId.FamilyUnset);
                var pokemonFamilies = myPokemonFamilies.ToArray();

                PokemonListView.DoubleBuffered(true);
                PokemonListView.View = View.Details;

                ColumnHeader columnheader;
                columnheader = new ColumnHeader();
                columnheader.Text = "Name";
                PokemonListView.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "CP";
                PokemonListView.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "IV A-D-S";
                PokemonListView.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "LVL";
                PokemonListView.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "Evolvable?";
                PokemonListView.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "Height";
                PokemonListView.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "Weight";
                PokemonListView.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "HP";
                PokemonListView.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "Attack";
                PokemonListView.Columns.Add(columnheader);
                columnheader = new ColumnHeader();
                columnheader.Text = "SpecialAttack";
                PokemonListView.Columns.Add(columnheader);

                foreach (var pokemon in pokemons)
                {
                    Bitmap pokemonImage = null;
                    await Task.Run(() =>
                    {
                        pokemonImage = GetPokemonImage((int)pokemon.PokemonId);
                    });
                    imageList.Images.Add(pokemon.PokemonId.ToString(), pokemonImage);

                    PokemonListView.LargeImageList = imageList;
                    var listViewItem = new ListViewItem();
                    listViewItem.Tag = pokemon;



                    var currentCandy = families
                        .Where(i => (int)i.FamilyId <= (int)pokemon.PokemonId)
                        .Select(f => f.Candy)
                        .First();
                    listViewItem.SubItems.Add(string.Format("{0}", pokemon.Cp));
                    listViewItem.SubItems.Add(string.Format("{0}% {1}-{2}-{3}", Math.Round(pokemon.CalculateIV()), pokemon.IndividualAttack, pokemon.IndividualDefense, pokemon.IndividualStamina));
                    listViewItem.SubItems.Add(string.Format("{0}", PokemonInfo.GetLevel(pokemon)));
                    listViewItem.ImageKey = pokemon.PokemonId.ToString();
                    
                    listViewItem.Text = string.Format((pokemon.Favorite == 1)? "{0} ★" : "{0}", pokemon.PokemonId);

                    listViewItem.ToolTipText = new DateTime((long)pokemon.CreationTimeMs * 10000).AddYears(1970).ToString("dd/MM/yyyy HH:mm:ss");
                    if (pokemon.Nickname!="")
                        listViewItem.ToolTipText += "\nNickname: " + pokemon.Nickname;

                    var settings = pokemonSettings.Single(x => x.PokemonId == pokemon.PokemonId);
                    var familyCandy = pokemonFamilies.Single(x => settings.FamilyId == x.FamilyId);

                    if (settings.EvolutionIds.Count > 0 && familyCandy.Candy >= settings.CandyToEvolve)
                    {
                        listViewItem.SubItems.Add("Y (" + familyCandy.Candy + "/" + settings.CandyToEvolve + ")");
                        listViewItem.Checked = true;
                    }
                    else
                    {
                        if (settings.EvolutionIds.Count > 0)
                            listViewItem.SubItems.Add("N (" + familyCandy.Candy + "/" + settings.CandyToEvolve + ")");
                        else
                            listViewItem.SubItems.Add("N (" + familyCandy.Candy + "/Max)");
                    }
                    listViewItem.SubItems.Add(string.Format("{0}", Math.Round(pokemon.HeightM, 2)));
                    listViewItem.SubItems.Add(string.Format("{0}", Math.Round(pokemon.WeightKg, 2)));
                    listViewItem.SubItems.Add(string.Format("{0}/{1}", pokemon.Stamina, pokemon.StaminaMax));
                    listViewItem.SubItems.Add(string.Format("{0}", pokemon.Move1));
                    listViewItem.SubItems.Add(string.Format("{0}", pokemon.Move2));

                    PokemonListView.Items.Add(listViewItem);
                }
                PokemonListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
                Text = "Pokemon List | User: "******" | Pokemons: " + pokemons.Count() + "/" + profile.Profile.PokeStorage;
                EnabledButton(true);

                statusTexbox.Text = string.Empty;
            }
            catch (Exception e)
            {
                Logger.ColoredConsoleWrite(ConsoleColor.Red, "Error reloading Pokemon list: " + e.Message);
                await Task.Delay(500); // Lets the API make a little pause, so we dont get blocked
                Execute();
            }
        }
        private async Task LoginPtc(string username, string password)
        {
            try
            {
                // Login Method
                _loginMethod = AuthType.Ptc;
                _username = username;
                _password = password;

                // Creating the Settings
                Logger.Write("Adjusting the Settings.");
                UserSettings.Default.AuthType = AuthType.Ptc.ToString();
                UserSettings.Default.PtcUsername = username;
                UserSettings.Default.PtcPassword = password;
                _settings = new Settings();

                // Begin Login
                Logger.Write("Trying to Login with PTC Credentials...");
                Client client = new Client(_settings);
                await client.DoPtcLogin(_settings.PtcUsername, _settings.PtcPassword);
                await client.SetServer();

                // Server Ready
                Logger.Write("Connected! Server is Ready.");                
                _client = client;

                Logger.Write("Attempting to Retrieve Inventory and Player Profile...");
                _inventory = new Inventory(client);
                _profile = await client.GetProfile();
                EnableButtons();
                _loginSuccess = true;
            }         
            catch(Exception ex)
            {
                // Error Logging
                ErrorReportCreator.Create("PTCLoginError", "Unable to Login with PTC", ex);

                Logger.Write("Unable to Connect using the PTC Credentials.");
                MessageBox.Show(@"Unable to Authenticate with Login Server.", @"Login Problem");
                Application.Exit();
            }
        }
 public static string GetUsername(Client client, GetPlayerResponse profile)
 {
     return PlayerName = client.Settings.AuthType == AuthType.Ptc ? client.Settings.PtcUsername : profile.Profile.Username;
 }
        private async Task LoginGoogle(string username, string password)
        {
            try
            {
                // Login Method
                _loginMethod = AuthType.Google;
                _username = username;
                _password = password;

                // Creating the Settings
                Logger.Write("Adjusting the Settings.");
                UserSettings.Default.AuthType = AuthType.Google.ToString();
                _settings = new Settings();

                // Begin Login
                Logger.Write("Trying to Login with Google Token...");
                Client client = new Client(_settings);
                client.DoGoogleLogin(username, password);
                await client.SetServer();

                // Server Ready
                Logger.Write("Connected! Server is Ready.");
                _client = client;

                Logger.Write("Attempting to Retrieve Inventory and Player Profile...");
                _inventory = new Inventory(client);
                _profile = await client.GetProfile();
                EnableButtons();
                _loginSuccess = true;
            }
            catch (GoogleException ex)
            {
                if(ex.Message.Contains("NeedsBrowser"))
                {
                    StringBuilder sb = new StringBuilder();
                    sb.AppendLine("It seems you have Google 2 Factor Authentication enabled.");
                    sb.AppendLine("In order to enable this bot to access your Google Account you need to create an App Password and use that one instead of your Google Password.");
                    sb.AppendLine();
                    sb.AppendLine("Please go to: https://security.google.com/settings/security/apppasswords");                    
                    sb.AppendLine("In 'Select App' select 'Other' and 'on my' select 'Windows Computer'.");
                    sb.AppendLine();
                    sb.AppendLine("This will generate a random password use that password login to the bot.");                    
                    MessageBox.Show(sb.ToString(), "Google 2 Factor Authentication");
                    Application.Exit();
                }

                if(ex.Message.Contains("BadAuth"))
                {
                    MessageBox.Show("Your Google Credentials are incorrect.", "Google Login");
                    Application.Exit();
                }
            }
            catch(Exception ex)
            {
                // Error Logging
                ErrorReportCreator.Create("GoogleLoginError", "Unable to Login with Google", ex);

                Logger.Write("Unable to Connect using the Google Token.");
                MessageBox.Show(@"Unable to Authenticate with Login Server.", @"Login Problem");
                Application.Exit();
            }
        }
Example #46
0
        public async Task<GetPlayerResponse> GetCachedProfile(bool request = false)
        {
            var now = DateTime.Now;
            var ss = new SemaphoreSlim(10);

            if (_lastRefresh.AddSeconds(30).Ticks > now.Ticks && request == false)
            {
                return _cachedProfile;
            }

            await ss.WaitAsync();

            try
            {
                _lastRefresh = now;
                try
                {
                    _cachedProfile = await GetProfile();
                } catch
                {

                }
            } finally
            {
                ss.Release();
            }
            return _cachedProfile;
        }
Example #47
0
 public async void GetPlayerData()
 {
     _player = await _client.Player.GetPlayer();
 }
Example #48
0
        private async void Execute()
        {
            EnabledButton(false);
            textBox1.Text = "Reloading Pokemon list.";

            client = new Client(ClientSettings);

            try
            {
                switch (ClientSettings.AuthType)
                {
                    case AuthType.Ptc:
                        await client.DoPtcLogin(ClientSettings.PtcUsername, ClientSettings.PtcPassword);
                        break;
                    case AuthType.Google:
                        await client.DoGoogleLogin();
                        break;
                }

                await client.SetServer();
                profile = await client.GetProfile();
                inventory = await client.GetInventory();
                pokemons =
                    inventory.InventoryDelta.InventoryItems
                    .Select(i => i.InventoryItemData?.Pokemon)
                        .Where(p => p != null && p?.PokemonId > 0)
                        .OrderByDescending(key => key.Cp);
                var families = inventory.InventoryDelta.InventoryItems
                    .Select(i => i.InventoryItemData?.PokemonFamily)
                    .Where(p => p != null && (int)p?.FamilyId > 0)
                    .OrderByDescending(p => (int)p.FamilyId);

                var imageSize = 50;

                var imageList = new ImageList { ImageSize = new Size(imageSize, imageSize) };
                listView1.ShowItemToolTips = true;

                var templates = await client.GetItemTemplates();
                var myPokemonSettings =  templates.ItemTemplates.Select(i => i.PokemonSettings).Where(p => p != null && p?.FamilyId != PokemonFamilyId.FamilyUnset);
                var pokemonSettings = myPokemonSettings.ToList();

                var myPokemonFamilies = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PokemonFamily).Where(p => p != null && p?.FamilyId != PokemonFamilyId.FamilyUnset);
                var pokemonFamilies = myPokemonFamilies.ToArray();

                listView1.DoubleBuffered(true);
                foreach (var pokemon in pokemons)
                {
                    Bitmap pokemonImage = null;
                    await Task.Run(() =>
                    {
                        pokemonImage = GetPokemonImage((int)pokemon.PokemonId);
                    });
                    imageList.Images.Add(pokemon.PokemonId.ToString(), pokemonImage);

                    listView1.LargeImageList = imageList;
                    var listViewItem = new ListViewItem();
                    listViewItem.Tag = pokemon;


                    var currentCandy = families
                        .Where(i => (int)i.FamilyId <= (int)pokemon.PokemonId)
                        .Select(f => f.Candy)
                        .First();
                    var currIv = Math.Round(Perfect(pokemon));
                    //listViewItem.SubItems.Add();
                    listViewItem.ImageKey = pokemon.PokemonId.ToString();

                    var pokemonId2 = pokemon.PokemonId;
                    var pokemonName = pokemon.Id;

                    listViewItem.Text = string.Format("{0}\n{1} CP", pokemon.PokemonId, pokemon.Cp);
                    listViewItem.ToolTipText = currentCandy + " Candy\n" + currIv + "% IV";

                    var settings = pokemonSettings.Single(x => x.PokemonId == pokemon.PokemonId);
                    var familyCandy = pokemonFamilies.Single(x => settings.FamilyId == x.FamilyId);

                    if (settings.EvolutionIds.Count > 0 && familyCandy.Candy > settings.CandyToEvolve)
                        listViewItem.Checked = true;

                    listView1.Items.Add(listViewItem);
                }
                Text = "Pokemon List | User: "******" | Pokemons: " + pokemons.Count() + "/" + profile.Profile.PokeStorage;
                EnabledButton(true);

                textBox1.Text = string.Empty;
            }
            catch (TaskCanceledException e) {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (UriFormatException e) {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (ArgumentOutOfRangeException e) {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (ArgumentNullException e) {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (NullReferenceException e) {
                textBox1.Text = e.Message;
                Execute();
            }
            catch (Exception e) {
                textBox1.Text = e.Message;
                Execute();
            }
        }