public IUserSearchParameters CloneUserSearchParameters(IUserSearchParameters userSearchParameters) { var clone = new UserSearchParameters(userSearchParameters.SearchQuery) { IncludeEntities = userSearchParameters.IncludeEntities, Page = userSearchParameters.Page, MaximumNumberOfResults = userSearchParameters.MaximumNumberOfResults }; return clone; }
public IUserSearchParameters CloneUserSearchParameters(IUserSearchParameters userSearchParameters) { var clone = new UserSearchParameters(userSearchParameters.SearchQuery) { IncludeEntities = userSearchParameters.IncludeEntities, Page = userSearchParameters.Page, MaximumNumberOfResults = userSearchParameters.MaximumNumberOfResults }; return(clone); }
public IEnumerable <IUserDTO> SearchUsers(IUserSearchParameters userSearchParameters) { if (string.IsNullOrEmpty(userSearchParameters.SearchQuery)) { return(null); } var maximumNumberOfResults = Math.Min(userSearchParameters.MaximumNumberOfResults, 1000); var searchParameter = _searchQueryHelper.CloneUserSearchParameters(userSearchParameters); searchParameter.MaximumNumberOfResults = Math.Min(searchParameter.MaximumNumberOfResults, 20); string query = _searchQueryGenerator.GetSearchUsersQuery(searchParameter); var currentResult = _twitterAccessor.ExecuteGETQuery <List <IUserDTO> >(query); var result = currentResult.ToDictionary(user => user.Id); var totalTweets = result.Count; while (totalTweets < maximumNumberOfResults) { if (currentResult.Count == 0) { // If Twitter does not have any result left, stop the search break; } searchParameter.MaximumNumberOfResults = Math.Min(userSearchParameters.MaximumNumberOfResults - totalTweets, 20); ++searchParameter.Page; query = _searchQueryGenerator.GetSearchUsersQuery(searchParameter); currentResult = _twitterAccessor.ExecuteGETQuery <List <IUserDTO> >(query); bool searchIsComplete = false; foreach (var userDTO in currentResult) { if (result.ContainsKey(userDTO.Id)) { searchIsComplete = true; } else { result.Add(userDTO.Id, userDTO); ++totalTweets; } } if (searchIsComplete) { break; } } return(result.Values); }
public string GetSearchUsersQuery(IUserSearchParameters userSearchParameters) { if (!_searchQueryValidator.IsSearchTweetsQueryValid(userSearchParameters.SearchQuery)) { return(null); } var queryBuilder = new StringBuilder(Resources.Search_SearchUsers); queryBuilder.AddParameterToQuery("q", _searchQueryParameterGenerator.GenerateSearchQueryParameter(userSearchParameters.SearchQuery)); queryBuilder.AddParameterToQuery("page", userSearchParameters.Page); queryBuilder.Append(_queryParameterGenerator.GenerateCountParameter(userSearchParameters.MaximumNumberOfResults)); queryBuilder.Append(_queryParameterGenerator.GenerateIncludeEntitiesParameter(userSearchParameters.IncludeEntities)); return(queryBuilder.ToString()); }
public string GetSearchUsersQuery(IUserSearchParameters userSearchParameters) { var baseQuery = GetSearchUsersQuery(userSearchParameters.SearchQuery); if (string.IsNullOrEmpty(baseQuery)) { return(null); } var queryBuilder = new StringBuilder(baseQuery); queryBuilder.AddParameterToQuery("page", userSearchParameters.Page); queryBuilder.Append(_queryParameterGenerator.GenerateCountParameter(userSearchParameters.MaximumNumberOfResults)); queryBuilder.Append(_queryParameterGenerator.GenerateIncludeEntitiesParameter(userSearchParameters.IncludeEntities)); return(queryBuilder.ToString()); }
public string GetSearchUsersQuery(IUserSearchParameters userSearchParameters) { var baseQuery = GetSearchUsersQuery(userSearchParameters.SearchQuery); if (string.IsNullOrEmpty(baseQuery)) { return null; } var queryBuilder = new StringBuilder(baseQuery); queryBuilder.AddParameterToQuery("page", userSearchParameters.Page); queryBuilder.Append(_queryParameterGenerator.GenerateCountParameter(userSearchParameters.MaximumNumberOfResults)); queryBuilder.Append(_queryParameterGenerator.GenerateIncludeEntitiesParameter(userSearchParameters.IncludeEntities)); return queryBuilder.ToString(); }
public IEnumerable<IUserDTO> SearchUsers(IUserSearchParameters userSearchParameters) { if (string.IsNullOrEmpty(userSearchParameters.SearchQuery)) { return null; } var maximumNumberOfResults = Math.Min(userSearchParameters.MaximumNumberOfResults, 1000); var searchParameter = _searchQueryHelper.CloneUserSearchParameters(userSearchParameters); searchParameter.MaximumNumberOfResults = Math.Min(searchParameter.MaximumNumberOfResults, 20); string query = _searchQueryGenerator.GetSearchUsersQuery(searchParameter); var currentResult = _twitterAccessor.ExecuteGETQuery<List<IUserDTO>>(query); if (currentResult == null) { return null; } var result = currentResult.ToDictionary(user => user.Id); var totalTweets = result.Count; while (totalTweets < maximumNumberOfResults) { if (currentResult.Count == 0) { // If Twitter does not have any result left, stop the search break; } searchParameter.MaximumNumberOfResults = Math.Min(userSearchParameters.MaximumNumberOfResults - totalTweets, 20); ++searchParameter.Page; query = _searchQueryGenerator.GetSearchUsersQuery(searchParameter); currentResult = _twitterAccessor.ExecuteGETQuery<List<IUserDTO>>(query); bool searchIsComplete = currentResult == null; if (!searchIsComplete) { foreach (var userDTO in currentResult) { if (result.ContainsKey(userDTO.Id)) { searchIsComplete = true; } else { result.Add(userDTO.Id, userDTO); ++totalTweets; } } } if (searchIsComplete) { break; } } return result.Values; }
public IEnumerable<IUserDTO> SearchUsers(IUserSearchParameters userSearchParameters) { if (string.IsNullOrEmpty(userSearchParameters.SearchQuery)) { return null; } var maximumNumberOfResults = Math.Min(userSearchParameters.MaximumNumberOfResults, 1000); var searchParameter = _searchQueryHelper.CloneUserSearchParameters(userSearchParameters); searchParameter.MaximumNumberOfResults = Math.Min(searchParameter.MaximumNumberOfResults, 20); string query = _searchQueryGenerator.GetSearchUsersQuery(searchParameter); var currentResult = _twitterAccessor.ExecuteGETQuery<List<IUserDTO>>(query); var result = new List<IUserDTO>(currentResult); var totalTweets = result.Count; while (totalTweets < maximumNumberOfResults) { if (currentResult.Count == 0) { // If Twitter does not have any result left, stop the search break; } searchParameter.MaximumNumberOfResults = Math.Min(userSearchParameters.MaximumNumberOfResults - totalTweets, 20); ++searchParameter.Page; query = _searchQueryGenerator.GetSearchUsersQuery(searchParameter); currentResult = _twitterAccessor.ExecuteGETQuery<List<IUserDTO>>(query); totalTweets += currentResult.Count; result.AddRange(currentResult); } return result; }
public IEnumerable <IUser> SearchUsers(IUserSearchParameters userSearchParameters) { var userDTOs = _searchQueryExecutor.SearchUsers(userSearchParameters); return(_userFactory.GenerateUsersFromDTO(userDTOs)); }
public string GetSearchUsersQuery(IUserSearchParameters userSearchParameters) { if (!_searchQueryValidator.IsSearchTweetsQueryValid(userSearchParameters.SearchQuery)) { return null; } var queryBuilder = new StringBuilder(Resources.Search_SearchUsers); queryBuilder.AddParameterToQuery("q", _searchQueryParameterGenerator.GenerateSearchQueryParameter(userSearchParameters.SearchQuery)); queryBuilder.AddParameterToQuery("page", userSearchParameters.Page); queryBuilder.Append(_queryParameterGenerator.GenerateCountParameter(userSearchParameters.MaximumNumberOfResults)); queryBuilder.Append(_queryParameterGenerator.GenerateIncludeEntitiesParameter(userSearchParameters.IncludeEntities)); return queryBuilder.ToString(); }
public IEnumerable<IUser> SearchUsers(IUserSearchParameters userSearchParameters) { var userDTOs = _searchQueryExecutor.SearchUsers(userSearchParameters); return _userFactory.GenerateUsersFromDTO(userDTOs); }