/// <summary> /// Uses both platform detection to find a player. Not as accurate or fast as providing a platform. /// </summary> /// <param name="username"></param> /// <returns>A <see cref="Player"/> if it was succesfully found, otherwise returns null.</returns> public async Task <Player> GetPlayerAsync(string username) { if (username.IsValidBattletag() && DetectedPlatforms.Contains(Platform.Pc)) { return(await GetPlayerAsync(username, Platform.Pc)); } if (!username.IsValidPsnId() && !username.IsValidXblId()) { throw new ArgumentException("Not a valid XBL, PSN or Battlenet ID", nameof(username)); } var player = new Player { Username = username }; var result = await _profileClient.GetProfileDetectPlatform(player); return(await _profileParser.Parse(player, result)); }