コード例 #1
0
 public async Task GetPlayerStatsAsync_ShouldRaiseArgumentException_WhenNoPlayerNameProvided()
 {
     //Arrange
     var client = new PUBGStatsClient("dummy");
     //Act
     StatsResponse responseTask = await client.GetPlayerStatsAsync(null).ConfigureAwait(false);
 }
コード例 #2
0
        public async Task <ActionResult> GetStats(string userId)
        {
            using (var client = new PUBGStatsClient(_apiKey)) {
                var stats = await client.GetPlayerStatsAsync(userId).ConfigureAwait(false);

                var na            = stats.Stats.Find(s => s.Region == PUBGSharp.Data.Region.NA);
                var currentSeason = Services.Season.CurrentSeason();

                var solo   = stats.Stats.FindLast(s => s.Region == PUBGSharp.Data.Region.NA && s.Mode == PUBGSharp.Data.Mode.Solo && s.Season == currentSeason);
                var duos   = stats.Stats.FindLast(s => s.Region == PUBGSharp.Data.Region.NA && s.Mode == PUBGSharp.Data.Mode.Duo && s.Season == currentSeason);
                var squads = stats.Stats.FindLast(s => s.Region == PUBGSharp.Data.Region.NA && s.Mode == PUBGSharp.Data.Mode.Squad && s.Season == currentSeason);

                var minimalStats = new Models.MinimalStats()
                {
                    Solo = new List <string> {
                        solo.Stats.Find(x => x.Stat == Stats.KDR).Value,
                        solo.Stats.Find(x => x.Stat == Stats.Wins).Value,
                        solo.Stats.Find(x => x.Stat == Stats.Top10).Value
                    },
                    Duos = new List <string> {
                        duos.Stats.Find(x => x.Stat == Stats.KDR).Value,
                        duos.Stats.Find(x => x.Stat == Stats.Wins).Value,
                        duos.Stats.Find(x => x.Stat == Stats.Top10).Value
                    },
                    Squads = new List <string> {
                        squads.Stats.Find(x => x.Stat == Stats.KDR).Value,
                        squads.Stats.Find(x => x.Stat == Stats.Wins).Value,
                        squads.Stats.Find(x => x.Stat == Stats.Top10).Value
                    }
                };

                var json = JsonConvert.SerializeObject(minimalStats);
                return(Ok(json));
            };
        }
コード例 #3
0
 public void PUBGStatsClientConstructor_ShouldRaiseArgumentException_WhenNoKeyProvided()
 {
     //Arrange
     //Act
     var client = new PUBGStatsClient(null);
     //Assert
 }
コード例 #4
0
ファイル: Program.cs プロジェクト: energystoryhhl/PUBGSharp
        private async Task MainAsync()
        {
            // Create client and send a stats request You can either use the "using" keyword or
            // dispose the PUBGStatsClient manually with the Dispose method.
            using (var statsClient = new PUBGStatsClient("api-key-here"))
            {
                // Searching for Player and Mode
                var stats = await statsClient.GetPlayerStatsAsync("shroud", mode : Mode.Solo).ConfigureAwait(false);

                // Searching for Player and specific value
                // the 1 seconds throttle applies her too, keep that in mind
                var test = await statsClient.GetPlayerStatsValue("shroud", mode : Mode.Solo, value : Stats.KDR);

                // Searching for Player, Region, Mode
                // var stats = await statsClient.GetPlayerStatsAsync("shroud",region: Region.NA, mode: Mode.Solo).ConfigureAwait(false);

                // Searching for Player, Region
                // var stats = await statsClient.GetPlayerStatsAsync("shroud", region: Region.NA).ConfigureAwait(false);

                // Print out player name and date the stats were last updated at.
                Console.WriteLine($"{stats.nickname}, last updated at: {stats.LastUpdated}");

                try
                {
                    //Print out Region chosen with mode selected
                    // Stats[0] = the region u selected, eg EU in this example
                    // Stats[1] = region AGG. The API also outputs the AGG values even when you select a specific region.
                    var latestKillstats = stats.Stats[0].Stats.Find(x => x.Stat == Stats.Kills);
                    // Print out amount of kills in the last season player has played in:
                    // This old searching method from the APIv1 still works!
                    var latestSeasonSoloStats = stats.Stats.FindLast(x => x.Mode == Mode.Solo);
                    var kills = latestSeasonSoloStats.Stats.Find(x => x.Stat == Stats.Kills);
                    Console.WriteLine($"Season: {latestSeasonSoloStats.Season}, kills: {kills.Value}");
                }

                /* IMPORTANT STUFF ABOUT EXCEPTIONS:
                 * The LINQ and other selector methods (e.g. .Find) will throw NullReferenceException in case the stats don't exist.
                 * So if player has no stats in specified region or game mode, it will throw NullReferenceException.
                 * For example, if you only have played in Europe and try to look up your stats in the Asia server, instead of showing 0's everywhere it throws this. */
                catch (PUBGSharpException ex)
                {
                    Console.WriteLine($"Could not retrieve stats for {stats.nickname}, error: {ex.Message}");
                }
                catch (NullReferenceException)
                {
                    Console.WriteLine($"Could not retrieve stats for {stats.nickname}.");
                    Console.WriteLine("The player might not exist or have stats in the specified mode or region.");
                }

                /* Outputs:
                 * Mithrain, last updated at: 2017-09-07T19:53:40.3611629Z
                 * Duo KDR: 2.87
                 * Stat: Headshot Kills, value: 69, Rank: #
                 * Season: 2017-pre4, kills: 32
                 */
            }

            await Task.Delay(-1);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: energystoryhhl/PUBGSharp
        private async Task MainAsync()
        {
            // Create client and send a stats request You can either use the "using" keyword or
            // dispose the PUBGStatsClient manually with the Dispose method.
            using (var statsClient = new PUBGStatsClient("api-key-here"))
            {
                var stats = await statsClient.GetPlayerStatsAsync("Mithrain", Region.AGG).ConfigureAwait(false);

                // Print out player name and date the stats were last updated at.
                Console.WriteLine($"{stats.nickname}, last updated at: {stats.LastUpdated}");

                try
                {
                    //Print out Region chosen with mode selected
                    // Stats[0] = the region u selected, eg EU in this example
                    // Stats[1] = region AGG. The API also outputs the AGG values even when you select a specific region.
                    var latestKillstats = stats.Stats[0].Stats.Find(x => x.Stat == Stats.Kills);

                    //The Find method from APIv1 still works in APIv2

                    // Print out amount of players KDR (Stats.KDR) in DUO mode (Mode.Duo) in ALL
                    // regions (Region.AGG) in SEASON 1 (Seasons.EASeason1).
                    var kdr = stats.Stats.Find(x => x.Mode == Mode.Duo && x.Region == Region.AGG && x.Season == Seasons.EASeason1).Stats.Find(x => x.Stat == Stats.KDR).Value;
                    Console.WriteLine($"Duo KDR: {kdr}");
                    // Print out amount of headshots kills in SOLO mode in NA region in SEASON 2.
                    var headshotKills = stats.Stats.Find(x => x.Mode == Mode.Solo && x.Region == Region.NA && x.Season == Seasons.EASeason2).Stats.Find(x => x.Stat == Stats.HeadshotKills);
                    // You can also display the stats by using .ToString() on the stat object, e.g:
                    Console.WriteLine(headshotKills.ToString());

                    // Print out amount of kills in the last season player has played in:
                    var latestSeasonSoloStats = stats.Stats.FindLast(x => x.Mode == Mode.Solo);
                    var kills = latestSeasonSoloStats.Stats.Find(x => x.Stat == Stats.Kills);
                    Console.WriteLine($"Season: {latestSeasonSoloStats.Season}, kills: {kills.Value}");
                }

                /* IMPORTANT STUFF ABOUT EXCEPTIONS:
                 * The LINQ and other selector methods (e.g. .Find) will throw NullReferenceException in case the stats don't exist.
                 * So if player has no stats in specified region or game mode, it will throw NullReferenceException.
                 * For example, if you only have played in Europe and try to look up your stats in the Asia server, instead of showing 0's everywhere it throws this. */
                catch (PUBGSharpException ex)
                {
                    Console.WriteLine($"Could not retrieve stats for {stats.nickname}, error: {ex.Message}");
                }
                catch (NullReferenceException)
                {
                    Console.WriteLine($"Could not retrieve stats for {stats.nickname}.");
                    Console.WriteLine("The player might not exist or have stats in the specified mode or region.");
                }

                /* Outputs:
                 * Mithrain, last updated at: 2017-09-07T19:53:40.3611629Z
                 * Duo KDR: 2.87
                 * Stat: Headshot Kills, value: 69, Rank: #
                 * Season: 2017-pre4, kills: 32
                 */
            }

            await Task.Delay(-1);
        }
コード例 #6
0
ファイル: PUBG.aspx.cs プロジェクト: FrancoisGayraud/AREA
        public async Task useApiAsync()
        {
            var statsClient = new PUBGStatsClient("3922a41f-afb0-42b0-b401-af64563159bb");
            var stats       = await statsClient.GetPlayerStatsAsync("Shroud");

            try
            {
                var kdr = stats.Stats.Find(x => x.Mode == Mode.Duo && x.Region == Region.AGG && x.Season == Seasons.EASeason1).Stats.Find(x => x.Stat == Stats.KDR);
                Console.WriteLine($"Duo KDR: {kdr.Value}");
                DuoKda = kdr.Value;
            }
            catch (NullReferenceException)
            {
                Console.WriteLine($"Could not retrieve stats for {stats.PlayerName}..");
            }
        }
コード例 #7
0
        private async Task MainAsync()
        {
            // Create client and send a stats request You can either use the "using" keyword or
            // dispose the PUBGStatsClient manually with the Dispose method.
            using (var statsClient = new PUBGStatsClient("api-key-here"))
            {
                var stats = await statsClient.GetPlayerStatsAsync("Mithrain").ConfigureAwait(false);

                // Print out player name and date the stats were last updated at.
                Console.WriteLine($"{stats.PlayerName}, last updated at: {stats.LastUpdated}");

                try
                {
                    // Print out amount of players KDR (Stats.KDR) in DUO mode (Mode.Duo) in ALL
                    // regions (Region.AGG) in SEASON 1 (Seasons.EASeason1).
                    var kdr = stats.Stats.Find(x => x.Mode == Mode.Duo && x.Region == Region.AGG && x.Season == Seasons.EASeason1).Stats.Find(x => x.Stat == Stats.KDR).Value;
                    Console.WriteLine($"Duo KDR: {kdr}");
                    // Print out amount of headshots kills in SOLO mode in NA region in SEASON 2.
                    var headshotKills = stats.Stats.Find(x => x.Mode == Mode.Solo && x.Region == Region.NA && x.Season == Seasons.EASeason2).Stats.Find(x => x.Stat == Stats.HeadshotKills);
                    // You can also display the stats by using .ToString() on the stat object, e.g:
                    Console.WriteLine(headshotKills.ToString());
                }

                /* IMPORTANT STUFF ABOUT EXCEPTIONS:
                 * The LINQ and other selector methods (e.g. .Find) will throw NullReferenceException in case the stats don't exist.
                 * So if player has no stats in specified region or game mode, it will throw NullReferenceException.
                 * For example, if you only have played in Europe and try to look up your stats in the Asia server, instead of showing 0's everywhere it throws this. */
                catch (PUBGSharpException ex)
                {
                    Console.WriteLine($"Could not retrieve stats for {stats.PlayerName}, error: {ex.Message}");
                }
                catch (NullReferenceException)
                {
                    Console.WriteLine($"Could not retrieve stats for {stats.PlayerName}.");
                    Console.WriteLine("The player might not exist or have stats in the specified mode or region.");
                }

                /* Outputs:
                 * Mithrain, last updated at: 2017-06-13T19:12:24.0579462Z
                 * Duo KDR: 2.87
                 * Stat: HeadshotKills, value: 54, Rank: #533
                 */
            }

            await Task.Delay(-1);
        }
コード例 #8
0
        public void GetPlayerStatsAsync_ShouldRaiseArgumentException_WhenNoPlayerNameProvided()
        {
            //Arrange
            var client = new PUBGStatsClient("dummy");

            //Act
            try
            {
                StatsResponse responseTask = client.GetPlayerStatsAsync(null).Result;
            }
            catch (Exception e)
            {
                //Assert
                //In case of awaitable tasks, aggregate exception is thrown, which should contain expected ArgumentException.
                Assert.IsInstanceOfType(e.InnerException, typeof(ArgumentException));
            }
        }
コード例 #9
0
ファイル: Player.cs プロジェクト: yedevtext/pubgbot
        public static async Task <StatsResponse> GetStats(string steamId)
        {
            if (string.IsNullOrEmpty(steamId))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(steamId));
            }

            var httpClient = new HttpClient();
            var apiKey     = ConfigurationManager.AppSettings["trackerHttpHeader"].Split(':')[1].Trim();
            var httpHeader = ConfigurationManager.AppSettings["trackerHttpHeader"].Split(':')[0];

            httpClient.DefaultRequestHeaders.Add(httpHeader, apiKey);

            //Get PUBG Nickname by SteamID(64 - bit number)
            //GET https://pubgtracker.com/api/search?steamId={STEAM ID}
            dynamic pubgNicknamebySteamId = JsonConvert.DeserializeObject(await httpClient.GetStringAsync($"https://pubgtracker.com/api/search?steamId={steamId}"));

            var statsClient = new PUBGStatsClient(apiKey);

            return(await statsClient.GetPlayerStatsAsync(pubgNicknamebySteamId.Nickname.ToString()));
        }
コード例 #10
0
        public Embed GetUserInfo(string username, Mode mode)
        {
            var user = new PUBGStatsClient(Keys.PubgKey).GetPlayerStatsAsync(username).Result;

            string[] relevantStats = { "Kills", "Win %", "Loesses", "Rating", "Top 10s", "K/D Ratio", "Longest Kill", "Round Most Kills", "Assists" };
            string   statsString   = default(string);

            user.Stats.Find(e => e.Mode == mode && e.Region == Region.NA).Stats.OrderBy <StatModel, int>(e => e.Stat.Count()).Foreach(e =>
            {
                if (e.Rank.HasValue && relevantStats.Contains(e.Stat))
                {
                    statsString += $"{e.Stat}  -  #{e.Rank}  -  {e.Value} \n";
                }
            });

            return(new EmbedBuilder()
                   .WithTitle(user.PlayerName)
                   .WithDescription(statsString)
                   .WithColor(new Color(255, 255, 0))
                   .WithThumbnailUrl(user.Avatar)
                   .Build());
        }
コード例 #11
0
        public async Task squadAllRegions([Remainder] string user)
        {
            var    username = user;
            string apiKey   = Settings.Default.apiKey;
            //create the statsClient with api key
            var statsClient = new PUBGStatsClient(apiKey);
            //wrapper to call the api
            var stats = await statsClient.GetPlayerStatsAsync(username);

            try
            {
                var SquadRank = stats.Stats.Find(x =>
                                                 x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                             x.Stat == Stats.Rating).Rank;

                var KDR = stats.Stats.Find(x =>
                                           x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                       x.Stat == Stats.KDR).Value;

                var kills = stats.Stats.Find(x =>
                                             x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                         x.Stat == Stats.Kills).Value;

                var wins = stats.Stats.Find(x =>
                                            x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                        x.Stat == Stats.Wins).Value;

                var win_percentage = stats.Stats.Find(x =>
                                                      x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                                  x.Stat == Stats.WinPercentage).Value;

                var roundsPlayed = stats.Stats.Find(x =>
                                                    x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                                x.Stat == Stats.RoundsPlayed).Value;

                var KPG = stats.Stats.Find(x =>
                                           x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                       x.Stat == Stats.KillsPerGame).Value;

                var longestkill = stats.Stats.Find(x =>
                                                   x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                               x.Stat == Stats.LongestKill).Value;

                var KO = stats.Stats.Find(x =>
                                          x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                      x.Stat == Stats.Knockouts).Value;

                var rating = stats.Stats.Find(x =>
                                              x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                          x.Stat == Stats.Rating).Value;

                double knockoutsPerGame = Math.Round((double.Parse(KO) / double.Parse(roundsPlayed)), 3);

                var assists = stats.Stats.Find(x =>
                                               x.Mode == Mode.Squad && x.Region == Region.AGG && x.Season == Seasons.EASeason3).Stats.Find(x =>
                                                                                                                                           x.Stat == Stats.Assists).Value;

                await Context.Channel.SendMessageAsync("\n```Rank: " + SquadRank.ToString() + "\n" +
                                                       "Rating: " + rating.ToString() + "\n" + "\n" +

                                                       "KDR: " + KDR.ToString() + "\n" +
                                                       "Kills: " + kills.ToString() + "\n" +
                                                       "Kills/Game: " + KPG.ToString() + "\n" +
                                                       "Assits: " + assists.ToString() + "\n" +
                                                       "Knockouts: " + KO.ToString() + "\n" +
                                                       "Knockouts/Game: " + knockoutsPerGame.ToString() + "\n" +
                                                       "Longest Kill: " + longestkill.ToString() + " meters \n" + "\n" +

                                                       "Wins: " + wins.ToString() + "\n" +
                                                       "Win Percentage: " + win_percentage + "\n" +
                                                       "Games Played: " + roundsPlayed + "\n" + "```");
            }

            catch (PUBGSharpException ex)
            {
                await ReplyAsync("Could not retrieve stats for " + username + " error: " + ex.Message);

                throw;
            }

            catch (ArgumentNullException excep)
            {
                await ReplyAsync("Could not retrieve stats for " + username + " error: " + excep.Message);

                throw;
            }
        }