public async Task <List <Battle> > GetBattlesAsync(string[] playerTags, PlayerBattleFilter playerBattleFilter = null)
        {
            Ensure.ArgumentNotNullOrEmptyEnumerable(playerTags, nameof(playerTags));

            var response = await GetBattlesResponseAsync(playerTags, playerBattleFilter);

            return(response.GetModel());
        }
        //public async Task<List<Player>> GetPlayersAsync(string[] playerTags, PlayerFilter playerFilter = null)
        //{
        //    Ensure.ArgumentNotNullOrEmptyEnumerable(playerTags, nameof(playerTags));

        //    var response = await GetPlayersResponseAsync(playerTags, playerFilter);

        //    return response.Model;
        //}

        public async Task <List <PlayerBattle> > GetBattlesAsync(string playerTag, PlayerBattleFilter playerBattleFilter = null)
        {
            Ensure.ArgumentNotNullOrEmptyString(playerTag, nameof(playerTag));

            IApiResponse <List <PlayerBattle> > response = await GetBattlesResponseAsync(playerTag, playerBattleFilter);

            return(response.Model);
        }
        public async Task <ApiResponse <List <Battle> > > GetBattlesResponseAsync(string[] playerTags, PlayerBattleFilter playerBattleFilter = null)
        {
            Ensure.ArgumentNotNullOrEmptyEnumerable(playerTags, nameof(playerTags));

            var apiResponse = await _restApiClient.GetApiResponseAsync <List <Battle> >(UrlPathBuilder.GetPlayerBattlesUrl(playerTags), playerBattleFilter?.ToQueryParams());

            return(apiResponse);
        }
        //public async Task<IApiResponse<List<Player>>> GetPlayersResponseAsync(string[] playerTags,
        //    PlayerFilter playerFilter = null)
        //{
        //    Ensure.ArgumentNotNullOrEmptyEnumerable(playerTags, nameof(playerTags));

        //    var apiResponse =
        //        await _restApiClient.GetApiResponseAsync<List<Player>>(UrlPathBuilder.GetPlayerUrl(playerTags),
        //            playerFilter?.ToQueryParams(), null, new CamelCaseNamingStrategy());

        //    return apiResponse;
        //}

        public async Task <IApiResponse <List <PlayerBattle> > > GetBattlesResponseAsync(string playerTag, PlayerBattleFilter playerBattleFilter = null)
        {
            Ensure.ArgumentNotNullOrEmptyString(playerTag, nameof(playerTag));

            IApiResponse <List <PlayerBattle> > apiResponse = await _restApiClient.GetApiResponseAsync <List <PlayerBattle> >(
                UrlPathBuilder.GetPlayerBattlesUrl(playerTag), playerBattleFilter?.ToQueryParams(), null,
                new CamelCaseNamingStrategy());

            return(apiResponse);
        }