diff --git a/Octokit.Reactive/Clients/IObservableSearchClient.cs b/Octokit.Reactive/Clients/IObservableSearchClient.cs index 821c1d7f..37a75825 100644 --- a/Octokit.Reactive/Clients/IObservableSearchClient.cs +++ b/Octokit.Reactive/Clients/IObservableSearchClient.cs @@ -21,7 +21,7 @@ namespace Octokit.Reactive /// /// /// List of users - IObservable SearchUsers(SearchUsersRequest search); + IObservable SearchUsers(SearchUsersRequest search); /// /// search issues diff --git a/Octokit.Reactive/Clients/ObservableSearchClient.cs b/Octokit.Reactive/Clients/ObservableSearchClient.cs index c30b757a..220cc48e 100644 --- a/Octokit.Reactive/Clients/ObservableSearchClient.cs +++ b/Octokit.Reactive/Clients/ObservableSearchClient.cs @@ -39,10 +39,10 @@ namespace Octokit.Reactive /// /// /// List of users - public IObservable SearchUsers(SearchUsersRequest search) + public IObservable SearchUsers(SearchUsersRequest search) { Ensure.ArgumentNotNull(search, "search"); - return _connection.GetAndFlattenAllPages(ApiUrls.SearchUsers(), search.Parameters); + return _client.Search.SearchUsers(search).ToObservable(); } /// diff --git a/Octokit.Tests.Integration/Clients/SearchClientTests.cs b/Octokit.Tests.Integration/Clients/SearchClientTests.cs index 8c2640b5..da5204e7 100644 --- a/Octokit.Tests.Integration/Clients/SearchClientTests.cs +++ b/Octokit.Tests.Integration/Clients/SearchClientTests.cs @@ -23,4 +23,13 @@ public class SearchClientTests Assert.NotEmpty(repos.Items); } + + [Fact] + public async Task SearchForGitHub() + { + var request = new SearchUsersRequest("github"); + var repos = await _gitHubClient.Search.SearchUsers(request); + + Assert.NotEmpty(repos.Items); + } } diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 5a18c57b..2aac476c 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -30,7 +30,7 @@ namespace Octokit.Tests.Clients var connection = Substitute.For(); var client = new SearchClient(connection); client.SearchUsers(new SearchUsersRequest("something")); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/users"), Arg.Any>()); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/users"), Arg.Any>()); } [Fact] @@ -47,7 +47,7 @@ namespace Octokit.Tests.Clients var client = new SearchClient(connection); var request = new SearchUsersRequest("github"); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github")); } @@ -60,7 +60,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.AccountType = AccountType.User; client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+type:User")); } @@ -73,7 +73,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.AccountType = AccountType.Org; client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+type:Org")); } @@ -87,7 +87,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.In = new[] { UserInQualifier.Fullname }; client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+in:Fullname")); } @@ -100,7 +100,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.In = new[] { UserInQualifier.Email }; client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+in:Email")); } @@ -113,7 +113,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.In = new[] { UserInQualifier.Username }; client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+in:Username")); } @@ -126,7 +126,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.In = new[] { UserInQualifier.Username, UserInQualifier.Fullname, UserInQualifier.Email }; client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+in:Username,Fullname,Email")); } @@ -139,7 +139,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Repositories = Range.GreaterThan(5); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+repos:>5")); } @@ -152,7 +152,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Repositories = Range.GreaterThanOrEquals(5); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+repos:>=5")); } @@ -165,7 +165,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Repositories = Range.LessThanOrEquals(5); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+repos:<=5")); } @@ -178,7 +178,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Repositories = Range.LessThan(5); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+repos:<5")); } @@ -191,7 +191,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Location = "San Francisco"; client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+location:San Francisco")); } @@ -205,7 +205,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Language = Language.Ruby; client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+language:Ruby")); } @@ -218,7 +218,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Created = DateRange.GreaterThan(new DateTime(2014, 1, 1)); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+created:>2014-01-01")); } @@ -231,7 +231,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Created = DateRange.GreaterThanOrEquals(new DateTime(2014, 1, 1)); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+created:>=2014-01-01")); } @@ -244,7 +244,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Created = DateRange.LessThanOrEquals(new DateTime(2014, 1, 1)); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+created:<=2014-01-01")); } @@ -257,7 +257,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Created = DateRange.LessThan(new DateTime(2014, 1, 1)); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+created:<2014-01-01")); } @@ -270,7 +270,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Followers = Range.GreaterThan(1); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+followers:>1")); } @@ -283,7 +283,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Followers = Range.GreaterThanOrEquals(1); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+followers:>=1")); } @@ -296,7 +296,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Followers = Range.LessThan(1); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+followers:<1")); } @@ -309,7 +309,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Followers = Range.LessThanOrEquals(1); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+followers:<=1")); } @@ -322,7 +322,7 @@ namespace Octokit.Tests.Clients var request = new SearchUsersRequest("github"); request.Followers = new Range(1, 1000); client.SearchUsers(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+followers:1..1000")); } diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index f562d239..8119aa37 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Threading.Tasks; namespace Octokit { - /// /// GitHub Search Api Client /// @@ -24,7 +23,7 @@ namespace Octokit /// /// /// List of users - Task> SearchUsers(SearchUsersRequest search); + Task SearchUsers(SearchUsersRequest search); /// /// search issues diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index c8ee5391..9cfb6041 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -37,10 +37,10 @@ namespace Octokit /// /// /// List of users - public Task> SearchUsers(SearchUsersRequest search) + public Task SearchUsers(SearchUsersRequest search) { Ensure.ArgumentNotNull(search, "search"); - return ApiConnection.GetAll(ApiUrls.SearchUsers(), search.Parameters); + return ApiConnection.Get(ApiUrls.SearchUsers(), search.Parameters); } /// diff --git a/Octokit/Models/Response/SearchUsersResult.cs b/Octokit/Models/Response/SearchUsersResult.cs new file mode 100644 index 00000000..4e5a4f9c --- /dev/null +++ b/Octokit/Models/Response/SearchUsersResult.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; + +namespace Octokit +{ + [DebuggerDisplay("{DebuggerDisplay,nq}")] + public class SearchUsersResult + { + public int TotalCount { get; set; } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] + public IReadOnlyList Items { get; set; } + + internal string DebuggerDisplay + { + get + { + return String.Format(CultureInfo.InvariantCulture, "TotalCount: {0}", TotalCount); + } + } + } +} \ No newline at end of file diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index 782c2aa3..bb7803d3 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -307,6 +307,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index 64bed0ac..19b956e7 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -318,6 +318,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index 33815ea8..24c46fcf 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -313,6 +313,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index 1b037257..f7b3c62e 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -305,6 +305,7 @@ + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index c2dc3fd9..a284967b 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -141,6 +141,7 @@ +