From 59d2e347b5a0075faa1d929bc2d0fe515f58557f Mon Sep 17 00:00:00 2001 From: Haroon Date: Wed, 6 Nov 2013 22:26:59 +0000 Subject: [PATCH 01/76] prepping search repos --- Octokit/Clients/ISearchClient.cs | 11 +++++ Octokit/Clients/SearchClient.cs | 38 ++++++++++++++++++ Octokit/Models/Request/SearchTerm.cs | 58 +++++++++++++++++++++++++++ Octokit/Models/Response/SearchRepo.cs | 37 +++++++++++++++++ Octokit/Octokit.csproj | 4 ++ 5 files changed, 148 insertions(+) create mode 100644 Octokit/Clients/ISearchClient.cs create mode 100644 Octokit/Clients/SearchClient.cs create mode 100644 Octokit/Models/Request/SearchTerm.cs create mode 100644 Octokit/Models/Response/SearchRepo.cs diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs new file mode 100644 index 0000000000..97997b8f54 --- /dev/null +++ b/Octokit/Clients/ISearchClient.cs @@ -0,0 +1,11 @@ +#if NET_45 +using System.Collections.Generic; +#endif +using System.Threading.Tasks; +namespace Octokit +{ + public interface ISearchClient + { + Task> SearchRepo(SearchTerm search); + } +} \ No newline at end of file diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs new file mode 100644 index 0000000000..f4b8f1c4a8 --- /dev/null +++ b/Octokit/Clients/SearchClient.cs @@ -0,0 +1,38 @@ +#if NET_45 +using System.Collections.Generic; +#endif +using System.Threading.Tasks; +namespace Octokit +{ + public class SearchClient : ApiClient, ISearchClient + { + /// + /// Initializes a new GitHub Search API client. + /// + /// An API connection. + public SearchClient(IApiConnection apiConnection) + : base(apiConnection) + { + + } + + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString", + Justification="Trust me")] + public Task> SearchRepo(SearchTerm search) + { + Ensure.ArgumentNotNull(search, "search"); + var param = new Dictionary(); + param.Add("q", search.Term); + param.Add("page", search.Page.ToString()); + param.Add("per_page ", search.PerPage.ToString()); + + if (search.Sort.HasValue) + param.Add("sort", search.Sort.Value.ToString()); + + if (search.Order.HasValue) + param.Add("order", search.Order.Value.ToString()); + + return ApiConnection.GetAll("search/repositories".FormatUri(), param); + } + } +} \ No newline at end of file diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs new file mode 100644 index 0000000000..7021664431 --- /dev/null +++ b/Octokit/Models/Request/SearchTerm.cs @@ -0,0 +1,58 @@ +namespace Octokit +{ + /// + /// Searching GitHub + /// + public class SearchTerm + { + public SearchTerm(string term) + { + Term = term; + Page = 1; + PerPage = 100; + } + + /// + /// The search terms. This can be any combination of the supported repository search parameters: + /// http://developer.github.com/v3/search/#search-code + /// + public string Term { get; set; } + + /// + /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. + /// + public SearchSort? Sort { get; set; } + + /// + /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. + /// + public SearchOrder? Order { get; set; } + + /// + /// Page of paginated results + /// + public int Page { get; set; } + + /// + /// Number of items per page + /// + public int PerPage { get; set; } + } + + public enum SearchSort + { + Stars, + Forks, + Updated + } + + public enum SearchOrder + { + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Asc")] + Asc, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Desc")] + Desc + } + + +} \ No newline at end of file diff --git a/Octokit/Models/Response/SearchRepo.cs b/Octokit/Models/Response/SearchRepo.cs new file mode 100644 index 0000000000..2dddf9d1fd --- /dev/null +++ b/Octokit/Models/Response/SearchRepo.cs @@ -0,0 +1,37 @@ +using System; + +namespace Octokit +{ + public class SearchRepo + { + /// + /// repo name + /// + public string Name { get; set; } + + /// + /// full name of repo e.g. dtrupenn/Tetris + /// + public string FullName { get; set; } + + /// + /// owner of repo + /// + public User Owner { get; set; } + + /// + /// is a private repo? + /// + public bool Private { get; set; } + + /// + /// description of repo + /// + public string Description { get; set; } + + /// + /// is repo a fork + /// + public bool Fork { get; set; } + } +} \ No newline at end of file diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index 613dda2f59..72d1f34d59 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -53,8 +53,11 @@ Properties\SolutionInfo.cs + + + @@ -83,6 +86,7 @@ + From 6cccf056e083d094971e2e9a83a16890acc7f4cb Mon Sep 17 00:00:00 2001 From: Haroon Date: Wed, 6 Nov 2013 22:31:46 +0000 Subject: [PATCH 02/76] clearer enum names --- Octokit/Models/Request/SearchTerm.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 7021664431..bd2c2d5aee 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -48,10 +48,8 @@ public enum SearchSort public enum SearchOrder { - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Asc")] - Asc, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Desc")] - Desc + Ascending, + Descending } From 4dbaa202f66ab0ef28018c14f8aaaa5271166392 Mon Sep 17 00:00:00 2001 From: Haroon Date: Wed, 6 Nov 2013 22:36:58 +0000 Subject: [PATCH 03/76] search users --- Octokit/Clients/ISearchClient.cs | 18 +++++++++++++++++- Octokit/Clients/SearchClient.cs | 19 +++++++++++++++++++ Octokit/Models/Response/SearchRepo.cs | 20 ++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index 97997b8f54..70cd0496fc 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -4,8 +4,24 @@ using System.Threading.Tasks; namespace Octokit { + + /// + /// GitHub Search Api Client + /// public interface ISearchClient { - Task> SearchRepo(SearchTerm search); + /// + /// search repos + /// + /// + /// + Task> SearchRepo(SearchTerm search); + + /// + /// search users + /// + /// + /// + Task> SearchUsers(SearchTerm search); } } \ No newline at end of file diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index f4b8f1c4a8..ee27af9721 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -34,5 +34,24 @@ public Task> SearchRepo(SearchTerm search) return ApiConnection.GetAll("search/repositories".FormatUri(), param); } + + + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] + public Task> SearchUsers(SearchTerm search) + { + Ensure.ArgumentNotNull(search, "search"); + var param = new Dictionary(); + param.Add("q", search.Term); + param.Add("page", search.Page.ToString()); + param.Add("per_page ", search.PerPage.ToString()); + + if (search.Sort.HasValue) + param.Add("sort", search.Sort.Value.ToString()); + + if (search.Order.HasValue) + param.Add("order", search.Order.Value.ToString()); + + return ApiConnection.GetAll("search/users".FormatUri(), param); + } } } \ No newline at end of file diff --git a/Octokit/Models/Response/SearchRepo.cs b/Octokit/Models/Response/SearchRepo.cs index 2dddf9d1fd..1439646bd9 100644 --- a/Octokit/Models/Response/SearchRepo.cs +++ b/Octokit/Models/Response/SearchRepo.cs @@ -2,6 +2,9 @@ namespace Octokit { + /// + /// Search repo response + /// public class SearchRepo { /// @@ -34,4 +37,21 @@ public class SearchRepo /// public bool Fork { get; set; } } + + /// + /// search user response + /// + public class SearchUser + { + /// + /// repo name + /// + public string Login { get; set; } + + /// + /// full name of repo e.g. dtrupenn/Tetris + /// + public string AvatarUrl { get; set; } + } + } \ No newline at end of file From 0094cec6aa9085d019889e7204503f634e1e9c51 Mon Sep 17 00:00:00 2001 From: Haroon Date: Wed, 6 Nov 2013 23:00:15 +0000 Subject: [PATCH 04/76] parameters should not be dupped --- Octokit/Clients/SearchClient.cs | 30 ++-------------------------- Octokit/Models/Request/SearchTerm.cs | 24 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index ee27af9721..4d1ef1b2cb 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -16,42 +16,16 @@ public SearchClient(IApiConnection apiConnection) } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString", - Justification="Trust me")] public Task> SearchRepo(SearchTerm search) { Ensure.ArgumentNotNull(search, "search"); - var param = new Dictionary(); - param.Add("q", search.Term); - param.Add("page", search.Page.ToString()); - param.Add("per_page ", search.PerPage.ToString()); - - if (search.Sort.HasValue) - param.Add("sort", search.Sort.Value.ToString()); - - if (search.Order.HasValue) - param.Add("order", search.Order.Value.ToString()); - - return ApiConnection.GetAll("search/repositories".FormatUri(), param); + return ApiConnection.GetAll("search/repositories".FormatUri(), search.Parameters); } - - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] public Task> SearchUsers(SearchTerm search) { Ensure.ArgumentNotNull(search, "search"); - var param = new Dictionary(); - param.Add("q", search.Term); - param.Add("page", search.Page.ToString()); - param.Add("per_page ", search.PerPage.ToString()); - - if (search.Sort.HasValue) - param.Add("sort", search.Sort.Value.ToString()); - - if (search.Order.HasValue) - param.Add("order", search.Order.Value.ToString()); - - return ApiConnection.GetAll("search/users".FormatUri(), param); + return ApiConnection.GetAll("search/users".FormatUri(), search.Parameters); } } } \ No newline at end of file diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index bd2c2d5aee..be85ffe55b 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -37,6 +37,30 @@ public SearchTerm(string term) /// Number of items per page /// public int PerPage { get; set; } + + /// + /// get the params in the correct format... + /// + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] + public System.Collections.Generic.IDictionary Parameters + { + get + { + var d = new System.Collections.Generic.Dictionary(); + d.Add("q", Term); + d.Add("page", Page.ToString()); + d.Add("per_page ", PerPage.ToString()); + + if (Sort.HasValue) + d.Add("sort", Sort.Value.ToString()); + + if (Order.HasValue) + d.Add("order", Order.Value.ToString()); + + return d; + } + } } public enum SearchSort From adaf3f6a4bdce1c4549aa88eb40585f790fc1aa0 Mon Sep 17 00:00:00 2001 From: Haroon Date: Wed, 6 Nov 2013 23:05:49 +0000 Subject: [PATCH 05/76] search issues --- Octokit/Clients/ISearchClient.cs | 8 +++++++ Octokit/Clients/SearchClient.cs | 7 +++++++ Octokit/Models/Response/SearchRepo.cs | 30 ++++++++++++++++++++++++++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index 70cd0496fc..d7e15c3da6 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -23,5 +23,13 @@ public interface ISearchClient /// /// Task> SearchUsers(SearchTerm search); + + /// + /// search issues + /// + /// + /// + Task> SearchIssues(SearchTerm search); + } } \ No newline at end of file diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index 4d1ef1b2cb..8ac5cda7b4 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -27,5 +27,12 @@ public Task> SearchUsers(SearchTerm search) Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/users".FormatUri(), search.Parameters); } + + + public Task> SearchIssues(SearchTerm search) + { + Ensure.ArgumentNotNull(search, "search"); + return ApiConnection.GetAll("search/issues".FormatUri(), search.Parameters); + } } } \ No newline at end of file diff --git a/Octokit/Models/Response/SearchRepo.cs b/Octokit/Models/Response/SearchRepo.cs index 1439646bd9..6e6bcd7326 100644 --- a/Octokit/Models/Response/SearchRepo.cs +++ b/Octokit/Models/Response/SearchRepo.cs @@ -49,9 +49,37 @@ public class SearchUser public string Login { get; set; } /// - /// full name of repo e.g. dtrupenn/Tetris + /// users avatar url /// public string AvatarUrl { get; set; } } + public class SearchIssue + { + /// + /// issue id + /// + public int Id { get; set; } + + /// + /// number inside the repo + /// + public int Number { get; set; } + + /// + /// author of this issue + /// + public User User { get; set; } + + /// + /// title of issue + /// + public string Title { get; set; } + + /// + /// comments on this issue + /// + public int Comments { get; set; } + } + } \ No newline at end of file From 5b6def6347a7ba5027ae7b0b3a43039b23bfeae5 Mon Sep 17 00:00:00 2001 From: Haroon Date: Wed, 6 Nov 2013 23:13:24 +0000 Subject: [PATCH 06/76] search code --- Octokit/Clients/ISearchClient.cs | 6 ++++++ Octokit/Clients/SearchClient.cs | 7 +++++++ Octokit/Models/Response/SearchRepo.cs | 24 ++++++++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index d7e15c3da6..ecbe9b1d6d 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -31,5 +31,11 @@ public interface ISearchClient /// Task> SearchIssues(SearchTerm search); + /// + /// search code + /// + /// + /// + Task> SearchCode(SearchTerm search); } } \ No newline at end of file diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index 8ac5cda7b4..a535613d3a 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -34,5 +34,12 @@ public Task> SearchIssues(SearchTerm search) Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/issues".FormatUri(), search.Parameters); } + + + public Task> SearchCode(SearchTerm search) + { + Ensure.ArgumentNotNull(search, "search"); + return ApiConnection.GetAll("search/code".FormatUri(), search.Parameters); + } } } \ No newline at end of file diff --git a/Octokit/Models/Response/SearchRepo.cs b/Octokit/Models/Response/SearchRepo.cs index 6e6bcd7326..e1d4c68822 100644 --- a/Octokit/Models/Response/SearchRepo.cs +++ b/Octokit/Models/Response/SearchRepo.cs @@ -82,4 +82,28 @@ public class SearchIssue public int Comments { get; set; } } + + public class SearchCode + { + /// + /// file name + /// + public string Name { get; set; } + + /// + /// path to file + /// + public string Path { get; set; } + + /// + /// Sha for file + /// + public string Sha { get; set; } + + /// + /// Repo where this file belongs to + /// + public Repository Repository { get; set; } + } + } \ No newline at end of file From c1f2d622aec6f4c5a532be7cf3e81810ceece33b Mon Sep 17 00:00:00 2001 From: Haroon Date: Wed, 6 Nov 2013 23:17:03 +0000 Subject: [PATCH 07/76] better documentation --- Octokit/Clients/ISearchClient.cs | 12 ++++++++---- Octokit/Clients/SearchClient.cs | 26 ++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index ecbe9b1d6d..d2f8904ab8 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -12,30 +12,34 @@ public interface ISearchClient { /// /// search repos + /// http://developer.github.com/v3/search/#search-repositories /// /// - /// + /// List of repos Task> SearchRepo(SearchTerm search); /// /// search users + /// http://developer.github.com/v3/search/#search-users /// /// - /// + /// List of users Task> SearchUsers(SearchTerm search); /// /// search issues + /// http://developer.github.com/v3/search/#search-issues /// /// - /// + /// List of issues Task> SearchIssues(SearchTerm search); /// /// search code + /// http://developer.github.com/v3/search/#search-code /// /// - /// + /// List of files Task> SearchCode(SearchTerm search); } } \ No newline at end of file diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index a535613d3a..391785ec14 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -16,26 +16,48 @@ public SearchClient(IApiConnection apiConnection) } + /// + /// search repos + /// http://developer.github.com/v3/search/#search-repositories + /// + /// + /// List of repos public Task> SearchRepo(SearchTerm search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/repositories".FormatUri(), search.Parameters); } + /// + /// search users + /// http://developer.github.com/v3/search/#search-users + /// + /// + /// List of users public Task> SearchUsers(SearchTerm search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/users".FormatUri(), search.Parameters); } - + /// + /// search issues + /// http://developer.github.com/v3/search/#search-issues + /// + /// + /// List of issues public Task> SearchIssues(SearchTerm search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/issues".FormatUri(), search.Parameters); } - + /// + /// search code + /// http://developer.github.com/v3/search/#search-code + /// + /// + /// List of files public Task> SearchCode(SearchTerm search) { Ensure.ArgumentNotNull(search, "search"); From 35a8150bbf2e84a0103528253834ea3148c6e4b1 Mon Sep 17 00:00:00 2001 From: Haroon Date: Wed, 6 Nov 2013 23:24:06 +0000 Subject: [PATCH 08/76] use SortDirection from issues --- Octokit/Models/Request/SearchTerm.cs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index be85ffe55b..d196c6fb3c 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -26,7 +26,7 @@ public SearchTerm(string term) /// /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. /// - public SearchOrder? Order { get; set; } + public SortDirection? Order { get; set; } /// /// Page of paginated results @@ -69,12 +69,4 @@ public enum SearchSort Forks, Updated } - - public enum SearchOrder - { - Ascending, - Descending - } - - } \ No newline at end of file From 6f55b7690c06ce5e95e7c6bb0af6d31e10c7cc4d Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:11:23 +0000 Subject: [PATCH 09/76] use existing issues class --- Octokit/Clients/ISearchClient.cs | 2 +- Octokit/Clients/SearchClient.cs | 4 ++-- Octokit/Models/Response/SearchRepo.cs | 29 --------------------------- 3 files changed, 3 insertions(+), 32 deletions(-) diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index d2f8904ab8..845cf592cd 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -32,7 +32,7 @@ public interface ISearchClient /// /// /// List of issues - Task> SearchIssues(SearchTerm search); + Task> SearchIssues(SearchTerm search); /// /// search code diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index 391785ec14..bb410b58a7 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -46,10 +46,10 @@ public Task> SearchUsers(SearchTerm search) /// /// /// List of issues - public Task> SearchIssues(SearchTerm search) + public Task> SearchIssues(SearchTerm search) { Ensure.ArgumentNotNull(search, "search"); - return ApiConnection.GetAll("search/issues".FormatUri(), search.Parameters); + return ApiConnection.GetAll("search/issues".FormatUri(), search.Parameters); } /// diff --git a/Octokit/Models/Response/SearchRepo.cs b/Octokit/Models/Response/SearchRepo.cs index e1d4c68822..743a5bd511 100644 --- a/Octokit/Models/Response/SearchRepo.cs +++ b/Octokit/Models/Response/SearchRepo.cs @@ -54,35 +54,6 @@ public class SearchUser public string AvatarUrl { get; set; } } - public class SearchIssue - { - /// - /// issue id - /// - public int Id { get; set; } - - /// - /// number inside the repo - /// - public int Number { get; set; } - - /// - /// author of this issue - /// - public User User { get; set; } - - /// - /// title of issue - /// - public string Title { get; set; } - - /// - /// comments on this issue - /// - public int Comments { get; set; } - } - - public class SearchCode { /// From 53476501d958dcedbfcb083121694643c187ebb8 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:13:31 +0000 Subject: [PATCH 10/76] use repo class not searchrepo --- Octokit/Clients/ISearchClient.cs | 2 +- Octokit/Clients/SearchClient.cs | 4 +-- Octokit/Models/Response/SearchRepo.cs | 36 --------------------------- 3 files changed, 3 insertions(+), 39 deletions(-) diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index 845cf592cd..2557cb34ad 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -16,7 +16,7 @@ public interface ISearchClient /// /// /// List of repos - Task> SearchRepo(SearchTerm search); + Task> SearchRepo(SearchTerm search); /// /// search users diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index bb410b58a7..d5f31d4cdc 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -22,10 +22,10 @@ public SearchClient(IApiConnection apiConnection) /// /// /// List of repos - public Task> SearchRepo(SearchTerm search) + public Task> SearchRepo(SearchTerm search) { Ensure.ArgumentNotNull(search, "search"); - return ApiConnection.GetAll("search/repositories".FormatUri(), search.Parameters); + return ApiConnection.GetAll("search/repositories".FormatUri(), search.Parameters); } /// diff --git a/Octokit/Models/Response/SearchRepo.cs b/Octokit/Models/Response/SearchRepo.cs index 743a5bd511..dd72560137 100644 --- a/Octokit/Models/Response/SearchRepo.cs +++ b/Octokit/Models/Response/SearchRepo.cs @@ -2,42 +2,6 @@ namespace Octokit { - /// - /// Search repo response - /// - public class SearchRepo - { - /// - /// repo name - /// - public string Name { get; set; } - - /// - /// full name of repo e.g. dtrupenn/Tetris - /// - public string FullName { get; set; } - - /// - /// owner of repo - /// - public User Owner { get; set; } - - /// - /// is a private repo? - /// - public bool Private { get; set; } - - /// - /// description of repo - /// - public string Description { get; set; } - - /// - /// is repo a fork - /// - public bool Fork { get; set; } - } - /// /// search user response /// From 99c83e9dd9eb9ad31c95b785c22c430231519752 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:18:03 +0000 Subject: [PATCH 11/76] rename file and seach users class --- Octokit/Clients/ISearchClient.cs | 2 +- Octokit/Clients/SearchClient.cs | 4 +-- .../Response/{SearchRepo.cs => SearchCode.cs} | 31 +++++++++---------- Octokit/Octokit.csproj | 2 +- 4 files changed, 19 insertions(+), 20 deletions(-) rename Octokit/Models/Response/{SearchRepo.cs => SearchCode.cs} (72%) diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index 2557cb34ad..cacdd5bbea 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -24,7 +24,7 @@ public interface ISearchClient /// /// /// List of users - Task> SearchUsers(SearchTerm search); + Task> SearchUsers(SearchTerm search); /// /// search issues diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index d5f31d4cdc..e6c83a3412 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -34,10 +34,10 @@ public Task> SearchRepo(SearchTerm search) /// /// /// List of users - public Task> SearchUsers(SearchTerm search) + public Task> SearchUsers(SearchTerm search) { Ensure.ArgumentNotNull(search, "search"); - return ApiConnection.GetAll("search/users".FormatUri(), search.Parameters); + return ApiConnection.GetAll("search/users".FormatUri(), search.Parameters); } /// diff --git a/Octokit/Models/Response/SearchRepo.cs b/Octokit/Models/Response/SearchCode.cs similarity index 72% rename from Octokit/Models/Response/SearchRepo.cs rename to Octokit/Models/Response/SearchCode.cs index dd72560137..cb742d4f9d 100644 --- a/Octokit/Models/Response/SearchRepo.cs +++ b/Octokit/Models/Response/SearchCode.cs @@ -2,22 +2,6 @@ namespace Octokit { - /// - /// search user response - /// - public class SearchUser - { - /// - /// repo name - /// - public string Login { get; set; } - - /// - /// users avatar url - /// - public string AvatarUrl { get; set; } - } - public class SearchCode { /// @@ -35,6 +19,21 @@ public class SearchCode /// public string Sha { get; set; } + /// + /// api-url to file + /// + public Uri Url { get; set; } + + /// + /// git-url to file + /// + public Uri GitUrl { get; set; } + + /// + /// html-url to file + /// + public Uri HtmlUrl { get; set; } + /// /// Repo where this file belongs to /// diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index d21e8d81b9..69a7e7ebbc 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -94,7 +94,7 @@ - + From b1a43b0e7d63421d8dd8eca6327b8eb6a9f61f96 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:22:28 +0000 Subject: [PATCH 12/76] add files to monoandriod --- Octokit/Octokit-MonoAndroid.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index 0847f4a8b8..ce461458d6 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -213,6 +213,10 @@ + + + + From a6b41cf245143fe2100bb0106389f5fab0a79e25 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:23:07 +0000 Subject: [PATCH 13/76] add files to monotouch --- Octokit/Octokit-Monotouch.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index 37824954f0..2de496ffd6 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -208,6 +208,10 @@ + + + + From 1c0df49b1249f672c119997eb274e88cad0154f5 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:23:46 +0000 Subject: [PATCH 14/76] add files to netcore45 --- Octokit/Octokit-netcore45.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index 4269348c64..00d6380fd5 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -200,6 +200,10 @@ + + + + From 3717b07fd7b5c39b2fe05c3fb168b9f49cecafb2 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:24:49 +0000 Subject: [PATCH 15/76] add files to mono proj --- Octokit/Octokit-Mono.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index 4b2ae82042..fb4e0a1f71 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -202,6 +202,10 @@ + + + + \ No newline at end of file From 624d2f91b73ddcadef1cb5a524013ee43459e596 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:29:13 +0000 Subject: [PATCH 16/76] prepping search client tests search/users --- Octokit.Tests/Clients/SearchClientTests.cs | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Octokit.Tests/Clients/SearchClientTests.cs diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs new file mode 100644 index 0000000000..258fb966e5 --- /dev/null +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -0,0 +1,47 @@ +using System; +using System.Threading.Tasks; +using NSubstitute; +using Octokit.Tests.Helpers; +using Xunit; + +namespace Octokit.Tests.Clients +{ + /// + /// Client tests mostly just need to make sure they call the IApiConnection with the correct + /// relative Uri. No need to fake up the response. All *those* tests are in ApiConnectionTests.cs. + /// + public class SearchClientTests + { + public class TheConstructor + { + [Fact] + public void EnsuresNonNullArguments() + { + Assert.Throws(() => new SearchClient(null)); + } + } + + public class TheSearchUsersMethod + { + [Fact] + public void RequestsTheCorrectUrl() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + + client.SearchCode(new SearchTerm("something")); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/users?q=something")); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var client = new SearchClient(Substitute.For()); + + AssertEx.Throws(async () => await client.SearchCode(null)); + } + } + + } +} From a6ba6f3c0593553381c87acc69ae7839491ad576 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:31:25 +0000 Subject: [PATCH 17/76] search repo test --- Octokit.Tests/Clients/SearchClientTests.cs | 22 ++++++++++++++++++++++ Octokit.Tests/Octokit.Tests.csproj | 1 + 2 files changed, 23 insertions(+) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 258fb966e5..5c0fc3a205 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -43,5 +43,27 @@ public async Task EnsuresNonNullArguments() } } + public class TheSearchRepoMethod + { + [Fact] + public void RequestsTheCorrectUrl() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + + client.SearchRepo(new SearchTerm("something")); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories?q=something")); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var client = new SearchClient(Substitute.For()); + + AssertEx.Throws(async () => await client.SearchRepo(null)); + } + } + } } diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj index 84daa12e91..d27fec46a6 100644 --- a/Octokit.Tests/Octokit.Tests.csproj +++ b/Octokit.Tests/Octokit.Tests.csproj @@ -62,6 +62,7 @@ + From 665a4f516520b7fbbf3a180a37f4a89e93b65a49 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:51:08 +0000 Subject: [PATCH 18/76] fixed url to search for build still fails... --- Octokit.Tests/Clients/SearchClientTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 5c0fc3a205..8067b3fda3 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -3,6 +3,7 @@ using NSubstitute; using Octokit.Tests.Helpers; using Xunit; +using System.Collections.Generic; namespace Octokit.Tests.Clients { @@ -31,7 +32,7 @@ public void RequestsTheCorrectUrl() client.SearchCode(new SearchTerm("something")); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/users?q=something")); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/users"), Arg.Any>()); } [Fact] @@ -52,8 +53,7 @@ public void RequestsTheCorrectUrl() var client = new SearchClient(connection); client.SearchRepo(new SearchTerm("something")); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories?q=something")); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } [Fact] From de370687baa4088627296c88b1746403e6385b3c Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:55:38 +0000 Subject: [PATCH 19/76] search issues test added --- Octokit.Tests/Clients/SearchClientTests.cs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 8067b3fda3..257398b8ca 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -65,5 +65,26 @@ public async Task EnsuresNonNullArguments() } } + public class TheSearchIssuesMethod + { + [Fact] + public void RequestsTheCorrectUrl() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + + client.SearchRepo(new SearchTerm("something")); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/issues"), Arg.Any>()); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var client = new SearchClient(Substitute.For()); + + AssertEx.Throws(async () => await client.SearchRepo(null)); + } + } + } } From a0c7f14293067d99c464fc5972340586439e8bab Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:56:39 +0000 Subject: [PATCH 20/76] fixed typos - calling incorrect method --- Octokit.Tests/Clients/SearchClientTests.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 257398b8ca..2ffc3fb3c6 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -30,7 +30,7 @@ public void RequestsTheCorrectUrl() var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchCode(new SearchTerm("something")); + client.SearchUsers(new SearchTerm("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/users"), Arg.Any>()); } @@ -73,7 +73,7 @@ public void RequestsTheCorrectUrl() var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchRepo(new SearchTerm("something")); + client.SearchIssues(new SearchTerm("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/issues"), Arg.Any>()); } @@ -86,5 +86,6 @@ public async Task EnsuresNonNullArguments() } } + } } From dcdc3c61a3d2891cb73ffad40db23c06ab06b86e Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:58:34 +0000 Subject: [PATCH 21/76] search code test --- Octokit.Tests/Clients/SearchClientTests.cs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 2ffc3fb3c6..ffb86b15a4 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -86,6 +86,27 @@ public async Task EnsuresNonNullArguments() } } + public class TheSearchCodeMethod + { + [Fact] + public void RequestsTheCorrectUrl() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + + client.SearchCode(new SearchTerm("something")); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/code"), Arg.Any>()); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var client = new SearchClient(Substitute.For()); + + AssertEx.Throws(async () => await client.SearchCode(null)); + } + } + } } From 3903ce2eb06e17cf62aa3906a2d3e140fcfbc357 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 09:59:27 +0000 Subject: [PATCH 22/76] fixed typos - calling incorrect method --- Octokit.Tests/Clients/SearchClientTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index ffb86b15a4..cdf374d59c 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -40,7 +40,7 @@ public async Task EnsuresNonNullArguments() { var client = new SearchClient(Substitute.For()); - AssertEx.Throws(async () => await client.SearchCode(null)); + AssertEx.Throws(async () => await client.SearchUsers(null)); } } @@ -82,7 +82,7 @@ public async Task EnsuresNonNullArguments() { var client = new SearchClient(Substitute.For()); - AssertEx.Throws(async () => await client.SearchRepo(null)); + AssertEx.Throws(async () => await client.SearchIssues(null)); } } From fd22025fc03e8597a9378ee62e71f5b9796e0516 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 9 Nov 2013 10:04:38 +0000 Subject: [PATCH 23/76] include search tests --- Octokit.Tests/OctoKit.Tests-NetCore45.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/Octokit.Tests/OctoKit.Tests-NetCore45.csproj b/Octokit.Tests/OctoKit.Tests-NetCore45.csproj index 7c00598945..ba747ca97a 100644 --- a/Octokit.Tests/OctoKit.Tests-NetCore45.csproj +++ b/Octokit.Tests/OctoKit.Tests-NetCore45.csproj @@ -107,6 +107,7 @@ + From 0c89b554efe5f5c726ca78bfe49710f614cbacfd Mon Sep 17 00:00:00 2001 From: Haroon Date: Thu, 14 Nov 2013 12:00:46 +0000 Subject: [PATCH 24/76] fixed the tests to search for correct type --- Octokit.Tests/Clients/SearchClientTests.cs | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index cdf374d59c..0cc40b0109 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -29,9 +29,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchUsers(new SearchTerm("something")); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/users"), Arg.Any>()); } @@ -39,7 +37,6 @@ public void RequestsTheCorrectUrl() public async Task EnsuresNonNullArguments() { var client = new SearchClient(Substitute.For()); - AssertEx.Throws(async () => await client.SearchUsers(null)); } } @@ -51,16 +48,14 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchRepo(new SearchTerm("something")); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } [Fact] public async Task EnsuresNonNullArguments() { var client = new SearchClient(Substitute.For()); - AssertEx.Throws(async () => await client.SearchRepo(null)); } } @@ -72,16 +67,14 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchIssues(new SearchTerm("something")); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/issues"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/issues"), Arg.Any>()); } [Fact] public async Task EnsuresNonNullArguments() { var client = new SearchClient(Substitute.For()); - AssertEx.Throws(async () => await client.SearchIssues(null)); } } @@ -93,20 +86,16 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchCode(new SearchTerm("something")); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/code"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/code"), Arg.Any>()); } [Fact] public async Task EnsuresNonNullArguments() { var client = new SearchClient(Substitute.For()); - AssertEx.Throws(async () => await client.SearchCode(null)); } } - - } } From 89bfae25d8c53c173ede4d0035b7fa10ea69441d Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 15 Nov 2013 00:13:26 +0000 Subject: [PATCH 25/76] change to string better conforms to the api, more simpler to implement too. --- Octokit/Models/Request/SearchTerm.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index d196c6fb3c..d7ab9964ec 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -19,9 +19,16 @@ public SearchTerm(string term) public string Term { get; set; } /// + /// For http://developer.github.com/v3/search/#search-repositories /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-code + /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-issues + /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-users + /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. /// - public SearchSort? Sort { get; set; } + public string Sort { get; set; } /// /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. @@ -52,8 +59,8 @@ public System.Collections.Generic.IDictionary Parameters d.Add("page", Page.ToString()); d.Add("per_page ", PerPage.ToString()); - if (Sort.HasValue) - d.Add("sort", Sort.Value.ToString()); + if (Sort.IsNotBlank()) //only add if not blank + d.Add("sort", Sort); if (Order.HasValue) d.Add("order", Order.Value.ToString()); @@ -62,11 +69,4 @@ public System.Collections.Generic.IDictionary Parameters } } } - - public enum SearchSort - { - Stars, - Forks, - Updated - } } \ No newline at end of file From be911051bdafc9b963abb9395195e7e3706bed89 Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 15 Nov 2013 10:00:37 +0000 Subject: [PATCH 26/76] create 4 request types for searching --- Octokit.Tests/Clients/SearchClientTests.cs | 8 +- Octokit/Clients/ISearchClient.cs | 8 +- Octokit/Clients/SearchClient.cs | 8 +- Octokit/Models/Request/SearchTerm.cs | 207 ++++++++++++++++++++- 4 files changed, 216 insertions(+), 15 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 0cc40b0109..9a86c96979 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -29,7 +29,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchUsers(new SearchTerm("something")); + client.SearchUsers(new RepositoriesRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/users"), Arg.Any>()); } @@ -48,7 +48,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchRepo(new SearchTerm("something")); + client.SearchRepo(new RepositoriesRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } @@ -67,7 +67,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchIssues(new SearchTerm("something")); + client.SearchIssues(new RepositoriesRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/issues"), Arg.Any>()); } @@ -86,7 +86,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchCode(new SearchTerm("something")); + client.SearchCode(new RepositoriesRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/code"), Arg.Any>()); } diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index cacdd5bbea..8c429a0a4a 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -16,7 +16,7 @@ public interface ISearchClient /// /// /// List of repos - Task> SearchRepo(SearchTerm search); + Task> SearchRepo(RepositoriesRequest search); /// /// search users @@ -24,7 +24,7 @@ public interface ISearchClient /// /// /// List of users - Task> SearchUsers(SearchTerm search); + Task> SearchUsers(UsersRequest search); /// /// search issues @@ -32,7 +32,7 @@ public interface ISearchClient /// /// /// List of issues - Task> SearchIssues(SearchTerm search); + Task> SearchIssues(IssuesRequest search); /// /// search code @@ -40,6 +40,6 @@ public interface ISearchClient /// /// /// List of files - Task> SearchCode(SearchTerm search); + Task> SearchCode(CodeRequest search); } } \ No newline at end of file diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index e6c83a3412..601147934b 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -22,7 +22,7 @@ public SearchClient(IApiConnection apiConnection) /// /// /// List of repos - public Task> SearchRepo(SearchTerm search) + public Task> SearchRepo(RepositoriesRequest search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/repositories".FormatUri(), search.Parameters); @@ -34,7 +34,7 @@ public Task> SearchRepo(SearchTerm search) /// /// /// List of users - public Task> SearchUsers(SearchTerm search) + public Task> SearchUsers(UsersRequest search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/users".FormatUri(), search.Parameters); @@ -46,7 +46,7 @@ public Task> SearchUsers(SearchTerm search) /// /// /// List of issues - public Task> SearchIssues(SearchTerm search) + public Task> SearchIssues(IssuesRequest search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/issues".FormatUri(), search.Parameters); @@ -58,7 +58,7 @@ public Task> SearchIssues(SearchTerm search) /// /// /// List of files - public Task> SearchCode(SearchTerm search) + public Task> SearchCode(CodeRequest search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/code".FormatUri(), search.Parameters); diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index d7ab9964ec..b3bf389477 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -1,11 +1,212 @@ namespace Octokit { /// - /// Searching GitHub + /// Searching GitHub Repositories /// - public class SearchTerm + public class RepositoriesRequest { - public SearchTerm(string term) + public RepositoriesRequest(string term) + { + Term = term; + Page = 1; + PerPage = 100; + } + + /// + /// The search terms. This can be any combination of the supported repository search parameters: + /// http://developer.github.com/v3/search/#search-code + /// + public string Term { get; set; } + + /// + /// For http://developer.github.com/v3/search/#search-repositories + /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-code + /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-issues + /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-users + /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. + /// + public string Sort { get; set; } + + /// + /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. + /// + public SortDirection? Order { get; set; } + + /// + /// Page of paginated results + /// + public int Page { get; set; } + + /// + /// Number of items per page + /// + public int PerPage { get; set; } + + /// + /// get the params in the correct format... + /// + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] + public System.Collections.Generic.IDictionary Parameters + { + get + { + var d = new System.Collections.Generic.Dictionary(); + d.Add("q", Term); + d.Add("page", Page.ToString()); + d.Add("per_page ", PerPage.ToString()); + + if (Sort.IsNotBlank()) //only add if not blank + d.Add("sort", Sort); + + if (Order.HasValue) + d.Add("order", Order.Value.ToString()); + + return d; + } + } + } + + public class UsersRequest + { + public UsersRequest(string term) + { + Term = term; + Page = 1; + PerPage = 100; + } + + /// + /// The search terms. This can be any combination of the supported repository search parameters: + /// http://developer.github.com/v3/search/#search-code + /// + public string Term { get; set; } + + /// + /// For http://developer.github.com/v3/search/#search-repositories + /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-code + /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-issues + /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-users + /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. + /// + public string Sort { get; set; } + + /// + /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. + /// + public SortDirection? Order { get; set; } + + /// + /// Page of paginated results + /// + public int Page { get; set; } + + /// + /// Number of items per page + /// + public int PerPage { get; set; } + + /// + /// get the params in the correct format... + /// + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] + public System.Collections.Generic.IDictionary Parameters + { + get + { + var d = new System.Collections.Generic.Dictionary(); + d.Add("q", Term); + d.Add("page", Page.ToString()); + d.Add("per_page ", PerPage.ToString()); + + if (Sort.IsNotBlank()) //only add if not blank + d.Add("sort", Sort); + + if (Order.HasValue) + d.Add("order", Order.Value.ToString()); + + return d; + } + } + } + + public class CodeRequest + { + public CodeRequest(string term) + { + Term = term; + Page = 1; + PerPage = 100; + } + + /// + /// The search terms. This can be any combination of the supported repository search parameters: + /// http://developer.github.com/v3/search/#search-code + /// + public string Term { get; set; } + + /// + /// For http://developer.github.com/v3/search/#search-repositories + /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-code + /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-issues + /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. + /// For http://developer.github.com/v3/search/#search-users + /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. + /// + public string Sort { get; set; } + + /// + /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. + /// + public SortDirection? Order { get; set; } + + /// + /// Page of paginated results + /// + public int Page { get; set; } + + /// + /// Number of items per page + /// + public int PerPage { get; set; } + + /// + /// get the params in the correct format... + /// + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] + public System.Collections.Generic.IDictionary Parameters + { + get + { + var d = new System.Collections.Generic.Dictionary(); + d.Add("q", Term); + d.Add("page", Page.ToString()); + d.Add("per_page ", PerPage.ToString()); + + if (Sort.IsNotBlank()) //only add if not blank + d.Add("sort", Sort); + + if (Order.HasValue) + d.Add("order", Order.Value.ToString()); + + return d; + } + } + } + + public class IssuesRequest + { + public IssuesRequest(string term) { Term = term; Page = 1; From 94defde555607c7b17b89d7cd4563d1509e2a165 Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 15 Nov 2013 10:01:40 +0000 Subject: [PATCH 27/76] fixed tests --- Octokit.Tests/Clients/SearchClientTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 9a86c96979..7dd9d6fdae 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -29,7 +29,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchUsers(new RepositoriesRequest("something")); + client.SearchUsers(new UsersRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/users"), Arg.Any>()); } @@ -67,7 +67,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchIssues(new RepositoriesRequest("something")); + client.SearchIssues(new IssuesRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/issues"), Arg.Any>()); } @@ -86,7 +86,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchCode(new RepositoriesRequest("something")); + client.SearchCode(new CodeRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/code"), Arg.Any>()); } From 53388402913f0c3ffd666a67c3821368a5dbe00c Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 15 Nov 2013 10:04:02 +0000 Subject: [PATCH 28/76] fixed up comments --- Octokit/Models/Request/SearchTerm.cs | 35 ++++++++-------------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index b3bf389477..c174cfaaae 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -1,7 +1,7 @@ namespace Octokit { /// - /// Searching GitHub Repositories + /// Searching Repositories /// public class RepositoriesRequest { @@ -21,12 +21,6 @@ public RepositoriesRequest(string term) /// /// For http://developer.github.com/v3/search/#search-repositories /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. - /// For http://developer.github.com/v3/search/#search-code - /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. - /// For http://developer.github.com/v3/search/#search-issues - /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. - /// For http://developer.github.com/v3/search/#search-users - /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. /// public string Sort { get; set; } @@ -70,6 +64,9 @@ public System.Collections.Generic.IDictionary Parameters } } + /// + /// Searching Users + /// public class UsersRequest { public UsersRequest(string term) @@ -86,12 +83,6 @@ public UsersRequest(string term) public string Term { get; set; } /// - /// For http://developer.github.com/v3/search/#search-repositories - /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. - /// For http://developer.github.com/v3/search/#search-code - /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. - /// For http://developer.github.com/v3/search/#search-issues - /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. /// For http://developer.github.com/v3/search/#search-users /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. /// @@ -137,6 +128,9 @@ public System.Collections.Generic.IDictionary Parameters } } + /// + /// Searching Code/Files + /// public class CodeRequest { public CodeRequest(string term) @@ -153,14 +147,8 @@ public CodeRequest(string term) public string Term { get; set; } /// - /// For http://developer.github.com/v3/search/#search-repositories - /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. /// For http://developer.github.com/v3/search/#search-code /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. - /// For http://developer.github.com/v3/search/#search-issues - /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. - /// For http://developer.github.com/v3/search/#search-users - /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. /// public string Sort { get; set; } @@ -204,6 +192,9 @@ public System.Collections.Generic.IDictionary Parameters } } + /// + /// Searching Issues + /// public class IssuesRequest { public IssuesRequest(string term) @@ -220,14 +211,8 @@ public IssuesRequest(string term) public string Term { get; set; } /// - /// For http://developer.github.com/v3/search/#search-repositories - /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. - /// For http://developer.github.com/v3/search/#search-code - /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. /// For http://developer.github.com/v3/search/#search-issues /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. - /// For http://developer.github.com/v3/search/#search-users - /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. /// public string Sort { get; set; } From 120032479e0e121086a4367a9b1a72daba35387a Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 15 Nov 2013 11:33:26 +0000 Subject: [PATCH 29/76] added search qualifiers for reporequest --- Octokit/Models/Request/SearchTerm.cs | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index c174cfaaae..9079db7c6c 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -39,6 +39,49 @@ public RepositoriesRequest(string term) /// public int PerPage { get; set; } + /// + /// The in qualifier limits what fields are searched. With this qualifier you can restrict the search to just the repository name, description, README, or any combination of these. + /// Without the qualifier, only the name and description are searched. + /// https://help.github.com/articles/searching-repositories#search-in + /// + public string In { get; set; } + + /// + /// Filters repositories based on the number of forks, and/or whether forked repositories should be included in the results at all. + /// https://help.github.com/articles/searching-repositories#forks + /// + public string Forks { get; set; } + + /// + /// The size qualifier finds repository's that match a certain size (in kilobytes). + /// https://help.github.com/articles/searching-repositories#size + /// + public string Size { get; set; } + + /// + /// Searches repositories based on the language they’re written in. + /// https://help.github.com/articles/searching-repositories#languages + /// + public string Language { get; set; } + + /// + /// Searches repositories based on the number of stars. + /// https://help.github.com/articles/searching-repositories#stars + /// + public string Stars { get; set; } + + /// + /// Limits searches to a specific user or repository. + /// https://help.github.com/articles/searching-repositories#users-organizations-and-repositories + /// + public string User { get; set; } + + /// + /// Filters repositories based on times of creation, or when they were last updated. + /// https://help.github.com/articles/searching-repositories#created-and-last-updated + /// + public string Created { get; set; } + /// /// get the params in the correct format... /// From b0df4c8afd4ebdf194a6f85836392ed94ad71fda Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 15 Nov 2013 11:40:27 +0000 Subject: [PATCH 30/76] test out how we can add those qualifiers --- Octokit/Models/Request/SearchTerm.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 9079db7c6c..dfa0c29014 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -92,7 +92,6 @@ public System.Collections.Generic.IDictionary Parameters get { var d = new System.Collections.Generic.Dictionary(); - d.Add("q", Term); d.Add("page", Page.ToString()); d.Add("per_page ", PerPage.ToString()); @@ -101,7 +100,13 @@ public System.Collections.Generic.IDictionary Parameters if (Order.HasValue) d.Add("order", Order.Value.ToString()); + + //add all search qualifiers (if any exist) + string qualifiers = ""; + if (In.IsNotBlank()) qualifiers += "in:" + In; + if (Size.IsNotBlank()) qualifiers += "size:" + Size; + d.Add("q", Term + " " + qualifiers); return d; } } From 31fe36d0fad075a2c2553b34c6cd0800b56568b9 Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 15 Nov 2013 12:05:52 +0000 Subject: [PATCH 31/76] simplify appending of qualifiers --- Octokit/Models/Request/SearchTerm.cs | 32 ++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index dfa0c29014..8df9ef65c3 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -100,16 +100,36 @@ public System.Collections.Generic.IDictionary Parameters if (Order.HasValue) d.Add("order", Order.Value.ToString()); - - //add all search qualifiers (if any exist) - string qualifiers = ""; - if (In.IsNotBlank()) qualifiers += "in:" + In; - if (Size.IsNotBlank()) qualifiers += "size:" + Size; - d.Add("q", Term + " " + qualifiers); + string qualifiers = ""; + qualifiers = QualifierAppender(qualifiers, "in:", In); + qualifiers = QualifierAppender(qualifiers, "size:", Size); + qualifiers = QualifierAppender(qualifiers, "forks:", Forks); + qualifiers = QualifierAppender(qualifiers, "created:", Created); + qualifiers = QualifierAppender(qualifiers, "user:", User); + qualifiers = QualifierAppender(qualifiers, "language:", Language); + qualifiers = QualifierAppender(qualifiers, "stars:", Stars); + + d.Add("q", Term + " " + qualifiers); //add qualifiers onto the search term return d; } } + + /// + /// Append qualifiers onto the query + /// + /// The qualifier to append to + /// key of the qualifier e.g. in: + /// value of the qualifier + /// + private static string QualifierAppender(string qualifier, string key, string value) + { + if (value.IsBlank()) //if the qualifier value is blank, we will ignore it + return qualifier; + + if (qualifier.IsBlank()) return value; + return qualifier + "+" + key + value; //not empty so we simply append the + sign onto this qualifier + } } /// From d5d67ef8860fae5d7d0d5313ce8751d947a1b130 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 16 Nov 2013 09:55:19 +0000 Subject: [PATCH 32/76] improved qualifier handling --- Octokit/Models/Request/SearchTerm.cs | 91 ++++++++++++++++++++++------ 1 file changed, 71 insertions(+), 20 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 8df9ef65c3..c1854b67f6 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -1,3 +1,5 @@ +using System; +using System.Collections.Generic; namespace Octokit { /// @@ -44,7 +46,7 @@ public RepositoriesRequest(string term) /// Without the qualifier, only the name and description are searched. /// https://help.github.com/articles/searching-repositories#search-in /// - public string In { get; set; } + public InQualifier In { get; set; } /// /// Filters repositories based on the number of forks, and/or whether forked repositories should be included in the results at all. @@ -56,7 +58,7 @@ public RepositoriesRequest(string term) /// The size qualifier finds repository's that match a certain size (in kilobytes). /// https://help.github.com/articles/searching-repositories#size /// - public string Size { get; set; } + public SizeQualifier Size { get; set; } /// /// Searches repositories based on the language they’re written in. @@ -81,6 +83,23 @@ public RepositoriesRequest(string term) /// https://help.github.com/articles/searching-repositories#created-and-last-updated /// public string Created { get; set; } + + public string MergeParameters() + { + var parameters = new List(); + + if (In != null) + { + parameters.Add(String.Format("in:{0}", In)); + } + + if (Size != null + { + parameters.Add(String.Format("size:{0}", Size)); + } + + return String.Join("+", parameters); + } /// /// get the params in the correct format... @@ -93,24 +112,8 @@ public System.Collections.Generic.IDictionary Parameters { var d = new System.Collections.Generic.Dictionary(); d.Add("page", Page.ToString()); - d.Add("per_page ", PerPage.ToString()); - - if (Sort.IsNotBlank()) //only add if not blank - d.Add("sort", Sort); - - if (Order.HasValue) - d.Add("order", Order.Value.ToString()); - - string qualifiers = ""; - qualifiers = QualifierAppender(qualifiers, "in:", In); - qualifiers = QualifierAppender(qualifiers, "size:", Size); - qualifiers = QualifierAppender(qualifiers, "forks:", Forks); - qualifiers = QualifierAppender(qualifiers, "created:", Created); - qualifiers = QualifierAppender(qualifiers, "user:", User); - qualifiers = QualifierAppender(qualifiers, "language:", Language); - qualifiers = QualifierAppender(qualifiers, "stars:", Stars); - - d.Add("q", Term + " " + qualifiers); //add qualifiers onto the search term + d.Add("per_page", PerPage.ToString()); + d.Add("q", Term + " " + MergeParameters()); //add qualifiers onto the search term return d; } } @@ -132,6 +135,54 @@ private static string QualifierAppender(string qualifier, string key, string val } } + public class InQualifier + { + private string query = string.Empty; + + public InQualifier() + { + + } + + public override string ToString() + { + return query; + } + } + + public class SizeQualifier + { + private string query = string.Empty; + + public SizeQualifier(int size) + { + + } + + public SizeQualifier(int minSize, int maxSize) + { + + } + + public SizeQualifier(int size, QualifierOperator op) + { + + } + + public override string ToString() + { + return query; + } + } + + public enum QualifierOperator + { + GREATER_THAN, // > + LESS_THAN, // < + LESS_OR_EQUAL, // <= + GREATER_OR_EQUAL// >= + } + /// /// Searching Users /// From 67fd41b57fa89a5719c1760fad7aa895f7c3d3e7 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 18 Nov 2013 14:43:37 +0000 Subject: [PATCH 33/76] size contructors --- Octokit/Models/Request/SearchTerm.cs | 32 +++++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index c1854b67f6..ee6231a0af 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -83,7 +83,7 @@ public RepositoriesRequest(string term) /// https://help.github.com/articles/searching-repositories#created-and-last-updated /// public string Created { get; set; } - + public string MergeParameters() { var parameters = new List(); @@ -156,17 +156,33 @@ public class SizeQualifier public SizeQualifier(int size) { - + query = size.ToString(); } public SizeQualifier(int minSize, int maxSize) { - + query = string.Format("{0}..{1}", minSize.ToString(), maxSize.ToString()); } public SizeQualifier(int size, QualifierOperator op) { - + switch (op) + { + case QualifierOperator.GreaterThan: + query = string.Format(">{0}", size.ToString()); + break; + case QualifierOperator.LessThan: + query = string.Format("<{0", size.ToString()); + break; + case QualifierOperator.LessOrEqualTo: + query = string.Format("<={0}", size.ToString()); + break; + case QualifierOperator.GreaterOrEqualTo: + query = string.Format(">={0}", size.ToString()); + break; + default: + break; + } } public override string ToString() @@ -177,10 +193,10 @@ public override string ToString() public enum QualifierOperator { - GREATER_THAN, // > - LESS_THAN, // < - LESS_OR_EQUAL, // <= - GREATER_OR_EQUAL// >= + GreaterThan, // > + LessThan, // < + LessOrEqualTo, // <= + GreaterOrEqualTo// >= } /// From d64db7e2c2b3326ddda333ab2e0c36c5c838a889 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 18 Nov 2013 14:49:12 +0000 Subject: [PATCH 34/76] add helper classes to ease instantiating --- Octokit/Models/Request/SearchTerm.cs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index ee6231a0af..c78fe2b8c7 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -93,7 +93,7 @@ public string MergeParameters() parameters.Add(String.Format("in:{0}", In)); } - if (Size != null + if (Size != null) { parameters.Add(String.Format("size:{0}", Size)); } @@ -185,6 +185,26 @@ public SizeQualifier(int size, QualifierOperator op) } } + public static SizeQualifier LessThan(int size) + { + return new SizeQualifier(size, QualifierOperator.LessThan); + } + + public static SizeQualifier LessThanOrEquals(int size) + { + return new SizeQualifier(size, QualifierOperator.LessOrEqualTo); + } + + public static SizeQualifier GreaterThan(int size) + { + return new SizeQualifier(size, QualifierOperator.GreaterThan); + } + + public static SizeQualifier GreaterThanOrEquals(int size) + { + return new SizeQualifier(size, QualifierOperator.GreaterOrEqualTo); + } + public override string ToString() { return query; From ae3b1fb3fe7b19a8ddc67eac4a308beac457178e Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 18 Nov 2013 16:47:43 +0000 Subject: [PATCH 35/76] those crazy code analysis fixes... --- Octokit/Models/Request/SearchTerm.cs | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index c78fe2b8c7..2383daa2e0 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -84,6 +84,7 @@ public RepositoriesRequest(string term) /// public string Created { get; set; } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] public string MergeParameters() { var parameters = new List(); @@ -117,22 +118,6 @@ public System.Collections.Generic.IDictionary Parameters return d; } } - - /// - /// Append qualifiers onto the query - /// - /// The qualifier to append to - /// key of the qualifier e.g. in: - /// value of the qualifier - /// - private static string QualifierAppender(string qualifier, string key, string value) - { - if (value.IsBlank()) //if the qualifier value is blank, we will ignore it - return qualifier; - - if (qualifier.IsBlank()) return value; - return qualifier + "+" + key + value; //not empty so we simply append the + sign onto this qualifier - } } public class InQualifier @@ -154,16 +139,19 @@ public class SizeQualifier { private string query = string.Empty; + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] public SizeQualifier(int size) { query = size.ToString(); } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object)"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] public SizeQualifier(int minSize, int maxSize) { query = string.Format("{0}..{1}", minSize.ToString(), maxSize.ToString()); } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] public SizeQualifier(int size, QualifierOperator op) { switch (op) @@ -172,7 +160,7 @@ public SizeQualifier(int size, QualifierOperator op) query = string.Format(">{0}", size.ToString()); break; case QualifierOperator.LessThan: - query = string.Format("<{0", size.ToString()); + query = string.Format("<{0}", size.ToString()); break; case QualifierOperator.LessOrEqualTo: query = string.Format("<={0}", size.ToString()); @@ -215,6 +203,7 @@ public enum QualifierOperator { GreaterThan, // > LessThan, // < + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "LessOr")] LessOrEqualTo, // <= GreaterOrEqualTo// >= } From 6ee011b0cebd69e143085b9a6a2420cc38cac808 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 18 Nov 2013 16:56:11 +0000 Subject: [PATCH 36/76] test uno --- Octokit.Tests/Clients/SearchClientTests.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 7dd9d6fdae..7b3cf7a741 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -58,6 +58,21 @@ public async Task EnsuresNonNullArguments() var client = new SearchClient(Substitute.For()); AssertEx.Throws(async () => await client.SearchRepo(null)); } + + [Fact] + public void TestingTheSizeQualifier() + { + //lets see how this API fairs out with comments from @shiftkey and @haacked. + + var connection = Substitute.For(); + var client = new SearchClient(connection); + + var request = new RepositoriesRequest("something"); + request.Size = new SizeQualifier(55); + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } } public class TheSearchIssuesMethod From a3c1499743bb634c150f12078b9e5f16199f1980 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 18 Nov 2013 17:00:16 +0000 Subject: [PATCH 37/76] added documentation so I know whats happenin --- Octokit.Tests/Clients/SearchClientTests.cs | 3 +++ Octokit/Models/Request/SearchTerm.cs | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 7b3cf7a741..1bcb346e8b 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -68,7 +68,10 @@ public void TestingTheSizeQualifier() var client = new SearchClient(connection); var request = new RepositoriesRequest("something"); + request.Size = new SizeQualifier(55); + + client.SearchRepo(request); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 2383daa2e0..bb6eb5dbad 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -139,18 +139,31 @@ public class SizeQualifier { private string query = string.Empty; + /// + /// Matches repositories that are size MB exactly + /// + /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] public SizeQualifier(int size) { query = size.ToString(); } + /// + /// Matches repositories that are between and KB + /// + /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object)"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] public SizeQualifier(int minSize, int maxSize) { query = string.Format("{0}..{1}", minSize.ToString(), maxSize.ToString()); } + /// + /// Matches repositories with regards to the size + /// We will use the to see what operator will be applied to the size qualifier + /// + /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] public SizeQualifier(int size, QualifierOperator op) { From 087b4ea7e3826300700d10b7f1e87d2040ef1332 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 18 Nov 2013 17:03:18 +0000 Subject: [PATCH 38/76] checkin out how I will call these methods... --- Octokit.Tests/Clients/SearchClientTests.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 1bcb346e8b..c4f284a49a 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -69,8 +69,16 @@ public void TestingTheSizeQualifier() var request = new RepositoriesRequest("something"); - request.Size = new SizeQualifier(55); - + request.Size = new SizeQualifier(55); //match 55Mb Exactly + request.Size = new SizeQualifier(100, 5000); //match repo's between 100 and 5000 MB's + request.Size = new SizeQualifier(1000, QualifierOperator.GreaterOrEqualTo); //match repo's that are greater than or equal to 1000 + request.Size = new SizeQualifier(1000, QualifierOperator.LessOrEqualTo); //match repo's that are less than or equal to 1000 + request.Size = new SizeQualifier(1000, QualifierOperator.LessThan); //match repo's that are less than 1000 + request.Size = new SizeQualifier(1000, QualifierOperator.GreaterThan); //match repo's that are greater than 1000 + request.Size = SizeQualifier.GreaterThan(5000); + request.Size = SizeQualifier.GreaterThanOrEquals(5000); + request.Size = SizeQualifier.LessThan(5000); + request.Size = SizeQualifier.LessThanOrEquals(5000); client.SearchRepo(request); From 7b0dec830f53ce8422fbfb4d3034edb307bd5ff6 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 18 Nov 2013 17:08:43 +0000 Subject: [PATCH 39/76] instantiate class with an overload --- Octokit.Tests/Clients/SearchClientTests.cs | 6 ++++++ Octokit/Models/Request/SearchTerm.cs | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index c4f284a49a..1c610b4d39 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -81,6 +81,12 @@ public void TestingTheSizeQualifier() request.Size = SizeQualifier.LessThanOrEquals(5000); client.SearchRepo(request); + + //part 2 + request = new RepositoriesRequest("github", SizeQualifier.GreaterThan(50)); //something like this looks better + + // that means I need to pass back a string and move out the greaterthan less than qualifiers away from size + // so it can be reused for anything else.... connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index bb6eb5dbad..07dc16489f 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -14,6 +14,14 @@ public RepositoriesRequest(string term) PerPage = 100; } + public RepositoriesRequest(string term, SizeQualifier size) + { + Term = term; + Page = 1; + PerPage = 100; + Size = size; + } + /// /// The search terms. This can be any combination of the supported repository search parameters: /// http://developer.github.com/v3/search/#search-code From c65758f7f72e7c083df648a59c6576b871b639d6 Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 00:19:14 +0000 Subject: [PATCH 40/76] seperated out range qualifier helper class --- Octokit.Tests/Clients/SearchClientTests.cs | 40 ++++++++++++---------- Octokit/Models/Request/SearchTerm.cs | 34 ++++++++++-------- 2 files changed, 41 insertions(+), 33 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 1c610b4d39..16b177801a 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -68,26 +68,30 @@ public void TestingTheSizeQualifier() var client = new SearchClient(connection); var request = new RepositoriesRequest("something"); - - request.Size = new SizeQualifier(55); //match 55Mb Exactly - request.Size = new SizeQualifier(100, 5000); //match repo's between 100 and 5000 MB's - request.Size = new SizeQualifier(1000, QualifierOperator.GreaterOrEqualTo); //match repo's that are greater than or equal to 1000 - request.Size = new SizeQualifier(1000, QualifierOperator.LessOrEqualTo); //match repo's that are less than or equal to 1000 - request.Size = new SizeQualifier(1000, QualifierOperator.LessThan); //match repo's that are less than 1000 - request.Size = new SizeQualifier(1000, QualifierOperator.GreaterThan); //match repo's that are greater than 1000 - request.Size = SizeQualifier.GreaterThan(5000); - request.Size = SizeQualifier.GreaterThanOrEquals(5000); - request.Size = SizeQualifier.LessThan(5000); - request.Size = SizeQualifier.LessThanOrEquals(5000); - + + //method 1... + request.Size = new Range(55); //match 55Mb Exactly + request.Size = new Range(100, 5000); //match repo's between 100 and 5000 MB's + request.Size = new Range(1000, QualifierOperator.GreaterOrEqualTo); //match repo's that are greater than or equal to 1000 + request.Size = new Range(1000, QualifierOperator.LessOrEqualTo); //match repo's that are less than or equal to 1000 + request.Size = new Range(1000, QualifierOperator.LessThan); //match repo's that are less than 1000 + request.Size = new Range(1000, QualifierOperator.GreaterThan); //match repo's that are greater than 1000 + request.Size = Range.GreaterThan(5000); + request.Size = Range.GreaterThanOrEquals(5000); + request.Size = Range.LessThan(5000); + request.Size = Range.LessThanOrEquals(5000); + client.SearchRepo(request); - //part 2 - request = new RepositoriesRequest("github", SizeQualifier.GreaterThan(50)); //something like this looks better - - // that means I need to pass back a string and move out the greaterthan less than qualifiers away from size - // so it can be reused for anything else.... - + //method 2... + + //check sizes for repos that are greater than 50 MB + request = new RepositoriesRequest("github", size: Range.GreaterThan(50)); + + //check sizes for repos that are greater than 50 MB and has less than 5000 stargazers + request = new RepositoriesRequest("github", size: Range.GreaterThan(50), stars: Range.LessThan(5000)); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } } diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 07dc16489f..f0bd249e97 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -14,12 +14,13 @@ public RepositoriesRequest(string term) PerPage = 100; } - public RepositoriesRequest(string term, SizeQualifier size) + public RepositoriesRequest(string term, Range size = null, Range stars = null) { Term = term; Page = 1; PerPage = 100; Size = size; + Stars = stars; } /// @@ -66,7 +67,7 @@ public RepositoriesRequest(string term, SizeQualifier size) /// The size qualifier finds repository's that match a certain size (in kilobytes). /// https://help.github.com/articles/searching-repositories#size /// - public SizeQualifier Size { get; set; } + public Range Size { get; set; } /// /// Searches repositories based on the language they’re written in. @@ -78,7 +79,7 @@ public RepositoriesRequest(string term, SizeQualifier size) /// Searches repositories based on the number of stars. /// https://help.github.com/articles/searching-repositories#stars /// - public string Stars { get; set; } + public Range Stars { get; set; } /// /// Limits searches to a specific user or repository. @@ -143,7 +144,10 @@ public override string ToString() } } - public class SizeQualifier + /// + /// Helper method in generating the range values for a qualifer e.g. In or Size qualifiers + /// + public class Range { private string query = string.Empty; @@ -152,7 +156,7 @@ public class SizeQualifier /// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] - public SizeQualifier(int size) + public Range(int size) { query = size.ToString(); } @@ -162,7 +166,7 @@ public SizeQualifier(int size) /// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object)"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] - public SizeQualifier(int minSize, int maxSize) + public Range(int minSize, int maxSize) { query = string.Format("{0}..{1}", minSize.ToString(), maxSize.ToString()); } @@ -173,7 +177,7 @@ public SizeQualifier(int minSize, int maxSize) /// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] - public SizeQualifier(int size, QualifierOperator op) + public Range(int size, QualifierOperator op) { switch (op) { @@ -194,24 +198,24 @@ public SizeQualifier(int size, QualifierOperator op) } } - public static SizeQualifier LessThan(int size) + public static Range LessThan(int size) { - return new SizeQualifier(size, QualifierOperator.LessThan); + return new Range(size, QualifierOperator.LessThan); } - public static SizeQualifier LessThanOrEquals(int size) + public static Range LessThanOrEquals(int size) { - return new SizeQualifier(size, QualifierOperator.LessOrEqualTo); + return new Range(size, QualifierOperator.LessOrEqualTo); } - public static SizeQualifier GreaterThan(int size) + public static Range GreaterThan(int size) { - return new SizeQualifier(size, QualifierOperator.GreaterThan); + return new Range(size, QualifierOperator.GreaterThan); } - public static SizeQualifier GreaterThanOrEquals(int size) + public static Range GreaterThanOrEquals(int size) { - return new SizeQualifier(size, QualifierOperator.GreaterOrEqualTo); + return new Range(size, QualifierOperator.GreaterOrEqualTo); } public override string ToString() From 987a3705b7de15decf75b66f8b5d00f28e37a2ba Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 00:24:36 +0000 Subject: [PATCH 41/76] suppress ctors that have default params --- Octokit/Models/Request/SearchTerm.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index f0bd249e97..c20ef78a17 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -14,6 +14,7 @@ public RepositoriesRequest(string term) PerPage = 100; } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] public RepositoriesRequest(string term, Range size = null, Range stars = null) { Term = term; From 55cae3f75e6cc96c89b839484b4ec39cdb0a8910 Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 00:30:19 +0000 Subject: [PATCH 42/76] here are those sweet and simple tests --- Octokit.Tests/Clients/SearchClientTests.cs | 42 +++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 16b177801a..42fa1e341a 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -60,7 +60,7 @@ public async Task EnsuresNonNullArguments() } [Fact] - public void TestingTheSizeQualifier() + public void CheckingOutIfTheApiIsSweet() { //lets see how this API fairs out with comments from @shiftkey and @haacked. @@ -92,6 +92,46 @@ public void TestingTheSizeQualifier() request = new RepositoriesRequest("github", size: Range.GreaterThan(50), stars: Range.LessThan(5000)); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } + + + [Fact] + public void TestingTheSizeAndStarQualifiers() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //check sizes for repos that are greater than 50 MB and has less than 5000 stargazers + var request = new RepositoriesRequest("github", size: Range.GreaterThan(50), stars: Range.LessThan(5000)); + + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } + + [Fact] + public void TestingTheSizeQualifier() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //check sizes for repos that are greater than 50 MB + var request = new RepositoriesRequest("github", size: Range.GreaterThan(50)); + + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } + + [Fact] + public void TestingTheStarsQualifier() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos whos stargazers are greater than 500 + var request = new RepositoriesRequest("github", stars: Range.GreaterThan(500)); + + client.SearchRepo(request); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } } From 7d4bce98d01aa27fa52f658ffad387816642eab9 Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 00:41:29 +0000 Subject: [PATCH 43/76] Seperate out Forks and fork --- Octokit.Tests/Clients/SearchClientTests.cs | 4 ++-- Octokit/Models/Request/SearchTerm.cs | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 42fa1e341a..85b204870c 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -95,8 +95,7 @@ public void CheckingOutIfTheApiIsSweet() connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } - - [Fact] +] [Fact] public void TestingTheSizeAndStarQualifiers() { var connection = Substitute.For(); @@ -134,6 +133,7 @@ public void TestingTheStarsQualifier() connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } + } public class TheSearchIssuesMethod diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index c20ef78a17..3ac8514d1a 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -15,7 +15,7 @@ public RepositoriesRequest(string term) } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public RepositoriesRequest(string term, Range size = null, Range stars = null) + public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null) { Term = term; Page = 1; @@ -62,7 +62,13 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null) /// Filters repositories based on the number of forks, and/or whether forked repositories should be included in the results at all. /// https://help.github.com/articles/searching-repositories#forks /// - public string Forks { get; set; } + public Range Forks { get; set; } + + /// + /// Filters repositories based whether forked repositories should be included in the results at all. + /// https://help.github.com/articles/searching-repositories#forks + /// + public bool? Fork { get; set; } /// /// The size qualifier finds repository's that match a certain size (in kilobytes). From 2c74134d0f98c1e0e6482ed8ddc598e0c9db79ec Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 00:44:11 +0000 Subject: [PATCH 44/76] add more things to merge params --- Octokit/Models/Request/SearchTerm.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 3ac8514d1a..594d7bb1ec 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -115,6 +115,17 @@ public string MergeParameters() parameters.Add(String.Format("size:{0}", Size)); } + if (Forks != null) + { + parameters.Add(String.Format("forks:{0}", Forks)); + } + + + if (Stars != null) + { + parameters.Add(String.Format("stars:{0}", Forks)); + } + return String.Join("+", parameters); } From c7976b421b845673aeb8e492bbe2511dd648a828 Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 01:01:37 +0000 Subject: [PATCH 45/76] Oh my all those languages... --- Octokit/Models/Request/SearchTerm.cs | 140 ++++++++++++++++++++++++++- 1 file changed, 138 insertions(+), 2 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 594d7bb1ec..58426bbe2f 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -15,13 +15,14 @@ public RepositoriesRequest(string term) } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null) + public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language language = null) { Term = term; Page = 1; PerPage = 100; Size = size; Stars = stars; + Language = language; } /// @@ -80,7 +81,7 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R /// Searches repositories based on the language they’re written in. /// https://help.github.com/articles/searching-repositories#languages /// - public string Language { get; set; } + public Language? Language { get; set; } /// /// Searches repositories based on the number of stars. @@ -126,6 +127,12 @@ public string MergeParameters() parameters.Add(String.Format("stars:{0}", Forks)); } + + if (Language != null) + { + parameters.Add(String.Format("l:{0}", Language.Value.ToString())); + } + return String.Join("+", parameters); } @@ -242,6 +249,135 @@ public override string ToString() } } + public enum Language + { + ABAP, + ActionScript, + Ada, + Apex, + AppleScript, + Arc, + Arduino, + ASP, + Assembly, + Augeas, + AutoHotKey, + Awk, + Boo, + Bro, + C, + CSharp, + CPlusPlus, + Ceylon, + CLIPS, + Clojure, + COBOL, + CoffeeScript, + ColdFusion, + CommonLisp, + Coq, + Css, + D, + Dart, + Dcpu16Asm, + Dot, + Dylan, + EC, + Ecl, + Eiffel, + Elixer, + Elm, + EmacsLisp, + Erlang, + FSharp, + Factor, + Fancy, + Fantom, + Forth, + Fortron, + Go, + Gosu, + Groovy, + Haskell, + Haxe, + Io, + Ioke, + J, + Java, + JavaScript, + Julia, + Kotlin, + Lasso, + LiveScript, + Logos, + Logtalk, + Lua, + M, + Markdown, + Matlab, + Max, + Mirah, + Monkey, + Moonscript, + Nemerie, + Nimrod, + Nu, + ObjectiveC, + ObjectiveJ, + OCaml, + Omgrofi, + Ooc, + Opa, + OpenEdgeAbl, + Parrot, + Pascal, + Perl, + Php, + Pike, + PogoScript, + PowerShell, + Processing, + Prolog, + Puppet, + PureData, + Python, + R, + Racket, + RagelInRubyHost, + Rebol, + Rouge, + Ruby, + Rust, + Scala, + Scheme, + Scilab, + Self, + Shell, + Slash, + Smalltalk, + Squirrel, + StandardML, + SuperCollider, + Tcl, + Turing, + Txl, + TypeScript, + Unkown, + Vala, + Verilog, + Vhdl, + VimL, + VisualBasic, + Volt, + Wisp, + Xc, + Xml, + XProc, + XQuery, + Xslt, + XLend + } + public enum QualifierOperator { GreaterThan, // > From 4f6931c2aba35369c7b27c52033bdac0b98f66ef Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 01:05:46 +0000 Subject: [PATCH 46/76] fix up ctors --- Octokit.Tests/Clients/SearchClientTests.cs | 2 +- Octokit/Models/Request/SearchTerm.cs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 85b204870c..1b1c96b27e 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -95,7 +95,7 @@ public void CheckingOutIfTheApiIsSweet() connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } -] [Fact] + [Fact] public void TestingTheSizeAndStarQualifiers() { var connection = Substitute.For(); diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 58426bbe2f..a8ced8bb2b 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -15,13 +15,14 @@ public RepositoriesRequest(string term) } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language language = null) + public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language? language = null) { Term = term; Page = 1; PerPage = 100; Size = size; Stars = stars; + Forks = forks; Language = language; } From 0bbaef8c288e431d5f14ee4a97b24b87058bcb4d Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 09:36:44 +0000 Subject: [PATCH 47/76] tests for forks and lanuage --- Octokit.Tests/Clients/SearchClientTests.cs | 31 +++++++++++++++------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 1b1c96b27e..9bbc6e190a 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -96,12 +96,12 @@ public void CheckingOutIfTheApiIsSweet() } [Fact] - public void TestingTheSizeAndStarQualifiers() + public void TestingTheSizeQualifier() { var connection = Substitute.For(); var client = new SearchClient(connection); - //check sizes for repos that are greater than 50 MB and has less than 5000 stargazers - var request = new RepositoriesRequest("github", size: Range.GreaterThan(50), stars: Range.LessThan(5000)); + //check sizes for repos that are greater than 50 MB + var request = new RepositoriesRequest("github", size: Range.GreaterThan(50)); client.SearchRepo(request); @@ -109,12 +109,12 @@ public void TestingTheSizeAndStarQualifiers() } [Fact] - public void TestingTheSizeQualifier() + public void TestingTheStarsQualifier() { var connection = Substitute.For(); var client = new SearchClient(connection); - //check sizes for repos that are greater than 50 MB - var request = new RepositoriesRequest("github", size: Range.GreaterThan(50)); + //get repos whos stargazers are greater than 500 + var request = new RepositoriesRequest("github", stars: Range.GreaterThan(500)); client.SearchRepo(request); @@ -122,12 +122,25 @@ public void TestingTheSizeQualifier() } [Fact] - public void TestingTheStarsQualifier() + public void TestingTheForksQualifier() { var connection = Substitute.For(); var client = new SearchClient(connection); - //get repos whos stargazers are greater than 500 - var request = new RepositoriesRequest("github", stars: Range.GreaterThan(500)); + //get repos which has forks that are greater than 50 + var request = new RepositoriesRequest("github", forks: Range.GreaterThan(50)); + + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } + + [Fact] + public void TestingTheLangaugeQualifier() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos whos language is Ruby + var request = new RepositoriesRequest("github", language: Language.Ruby); client.SearchRepo(request); From 46da98c8ad6788394c3dcc512f22d59ee1599dd4 Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 09:52:45 +0000 Subject: [PATCH 48/76] The In qualifier --- Octokit.Tests/Clients/SearchClientTests.cs | 13 ++++++++++ Octokit/Models/Request/SearchTerm.cs | 30 ++++++++++++---------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 9bbc6e190a..51019d13b2 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -147,6 +147,19 @@ public void TestingTheLangaugeQualifier() connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } + [Fact] + public void TestingTheInQualifier() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the Description contains the test 'github' + var request = new RepositoriesRequest("github", inQualifiers: new List() { { InQualifier.Description } }); + + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } + } public class TheSearchIssuesMethod diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index a8ced8bb2b..de20d8aaab 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Linq; + namespace Octokit { /// @@ -15,7 +17,7 @@ public RepositoriesRequest(string term) } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language? language = null) + public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language? language = null, List inQualifiers = null) { Term = term; Page = 1; @@ -24,6 +26,9 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R Stars = stars; Forks = forks; Language = language; + + if (inQualifiers != null && inQualifiers.Count > 0) + In = inQualifiers.Distinct().ToList(); } /// @@ -58,7 +63,7 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R /// Without the qualifier, only the name and description are searched. /// https://help.github.com/articles/searching-repositories#search-in /// - public InQualifier In { get; set; } + public List In { get; set; } /// /// Filters repositories based on the number of forks, and/or whether forked repositories should be included in the results at all. @@ -155,19 +160,16 @@ public System.Collections.Generic.IDictionary Parameters } } - public class InQualifier + /// + /// https://help.github.com/articles/searching-repositories#search-in + /// The in qualifier limits what fields are searched. With this qualifier you can restrict the search to just the + /// repository name, description, README, or any combination of these. + /// + public enum InQualifier { - private string query = string.Empty; - - public InQualifier() - { - - } - - public override string ToString() - { - return query; - } + Name, + Description, + Readme } /// From 3fc1b2dc14423e79da154719c9f29882e2f40a18 Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 10:01:32 +0000 Subject: [PATCH 49/76] Add user and fix In and stars for mergeparameter --- Octokit/Models/Request/SearchTerm.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index de20d8aaab..03c857f97f 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -114,7 +114,7 @@ public string MergeParameters() if (In != null) { - parameters.Add(String.Format("in:{0}", In)); + parameters.Add(String.Format("in:{0}", String.Join(",", In))); } if (Size != null) @@ -127,18 +127,21 @@ public string MergeParameters() parameters.Add(String.Format("forks:{0}", Forks)); } - if (Stars != null) { - parameters.Add(String.Format("stars:{0}", Forks)); + parameters.Add(String.Format("stars:{0}", Stars)); } - if (Language != null) { parameters.Add(String.Format("l:{0}", Language.Value.ToString())); } + if (User.IsNotBlank()) + { + parameters.Add(String.Format("user:{0}", User)); + } + return String.Join("+", parameters); } From a480b2a42d40d61a85dde8b46868ee3db44a2250 Mon Sep 17 00:00:00 2001 From: Haroon Date: Tue, 19 Nov 2013 10:02:02 +0000 Subject: [PATCH 50/76] language not l --- Octokit/Models/Request/SearchTerm.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 03c857f97f..696887e86d 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -134,7 +134,7 @@ public string MergeParameters() if (Language != null) { - parameters.Add(String.Format("l:{0}", Language.Value.ToString())); + parameters.Add(String.Format("language:{0}", Language.Value.ToString())); } if (User.IsNotBlank()) From e01da11af5c821225995711ede0a74c37a7bd2ea Mon Sep 17 00:00:00 2001 From: Haroon Date: Thu, 21 Nov 2013 09:03:59 +0000 Subject: [PATCH 51/76] updated language params --- Octokit/Models/Request/SearchTerm.cs | 144 ++++++++++++++++++++++++--- 1 file changed, 132 insertions(+), 12 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 696887e86d..6c4106258c 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -1,3 +1,4 @@ +using Octokit.Internal; using System; using System.Collections.Generic; using System.Linq; @@ -26,7 +27,7 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R Stars = stars; Forks = forks; Language = language; - + if (inQualifiers != null && inQualifiers.Count > 0) In = inQualifiers.Distinct().ToList(); } @@ -257,131 +258,250 @@ public override string ToString() public enum Language { - ABAP, + Abap, + [Parameter(Value = "ActionScript")] ActionScript, Ada, Apex, + [Parameter(Value = "AppleScript")] AppleScript, Arc, Arduino, - ASP, + [Parameter(Value = "ApacheConf")] + ApacheConf, + Asp, Assembly, Augeas, + [Parameter(Value = "AutoHotKey")] AutoHotKey, Awk, + Batchfile, + Befunge, + [Parameter(Value = "BlitzMax")] + BlitzMax, Boo, Bro, C, - CSharp, - CPlusPlus, + [Parameter(Value = "C2hs Haskell")] + C2hsHaskell, Ceylon, - CLIPS, + Chuck, + Clips, Clojure, - COBOL, + Cobol, + Cmake, + [Parameter(Value = "C-ObjDump")] + CObjDump, + [Parameter(Value = "CoffeeScript")] CoffeeScript, + [Parameter(Value = "ColdFusion")] ColdFusion, CommonLisp, Coq, + [Parameter(Value = "C++")] + CPlusPlus, + [Parameter(Value = "C#")] + CSharp, Css, + [Parameter(Value = "Cpp-ObjDump")] + CppObjDump, + Cucumber, + Cython, D, + [Parameter(Value = "D-ObjDump")] + DObjDump, + [Parameter(Value = "DarcsPatch")] + DarcsPatch, Dart, + [Parameter(Value = "DCPU-16 ASM")] Dcpu16Asm, Dot, Dylan, - EC, + Ec, + [Parameter(Value = "Ecere Projects")] + EcereProjects, Ecl, + Edn, Eiffel, Elixer, Elm, EmacsLisp, Erlang, + [Parameter(Value = "F#")] FSharp, Factor, Fancy, Fantom, + Fish, Forth, - Fortron, + Fortran, + Gas, + Genshi, + [Parameter(Value = "Gentoo Build")] + GentooBuild, + [Parameter(Value = "Gentoo Eclass")] + GentooEclass, + [Parameter(Value = "Gettext Catalog")] + GettextCatalog, + Glsl, Go, Gosu, + Groff, Groovy, + [Parameter(Value = "Groovy Server Pages")] + GroovyServerPages, + Haml, + [Parameter(Value = "HandleBars")] + HandleBars, Haskell, Haxe, + Http, + Ini, Io, Ioke, + [Parameter(Value = "IRC log")] + IrcLog, J, Java, + [Parameter(Value = "Java Server Pages")] + JavaServerPages, JavaScript, + Json, Julia, Kotlin, Lasso, + Less, + Lfe, + [Parameter(Value = "LillyPond")] + LillyPond, + [Parameter(Value = "Literate CoffeeScript")] + LiterateCoffeeScript, + [Parameter(Value = "Literate Haskell")] + LiterateHaskell, + [Parameter(Value = "LiveScript")] LiveScript, + Llvm, Logos, Logtalk, Lua, M, + Makefile, + Mako, Markdown, Matlab, Max, + [Parameter(Value = "MiniD")] + MiniD, Mirah, Monkey, + Moocode, Moonscript, - Nemerie, + Mupad, + Myghty, + Nemerle, + Nginx, Nimrod, + Nsis, Nu, + [Parameter(Value = "NumPY")] + NumPY, + [Parameter(Value = "ObjDump")] + ObjDump, ObjectiveC, ObjectiveJ, + [Parameter(Value = "OCaml")] OCaml, - Omgrofi, + Omgrofl, Ooc, Opa, + [Parameter(Value = "OpenCL")] + OpenCL, + [Parameter(Value = "OpenEdge ABL")] OpenEdgeAbl, Parrot, + [Parameter(Value = "Parrot Assembly")] + ParrotAssembly, + [Parameter(Value = "Parrot Internal Representation")] + ParrotInternalRepresentation, Pascal, Perl, Php, Pike, + [Parameter(Value = "PogoScript")] PogoScript, + [Parameter(Value = "PowerShell")] PowerShell, Processing, Prolog, Puppet, + [Parameter(Value = "Pure Data")] PureData, Python, + [Parameter(Value = "Python traceback")] + PythonTraceback, R, Racket, + [Parameter(Value = "Ragel in Ruby Host")] RagelInRubyHost, + [Parameter(Value = "Raw token data")] + RawTokenData, Rebol, + Redcode, + [Parameter(Value = "reStructuredText")] + ReStructuredText, + Rhtml, Rouge, Ruby, Rust, Scala, Scheme, + Sage, + Sass, Scilab, + Scss, Self, Shell, Slash, Smalltalk, + Smarty, Squirrel, + [Parameter(Value = "Standard ML")] StandardML, + [Parameter(Value = "SuperCollider")] SuperCollider, Tcl, + Tcsh, + Tea, + [Parameter(Value = "TeX")] + TeX, + Textile, + Toml, Turing, + Twig, Txl, + [Parameter(Value = "TypeScript")] TypeScript, + [Parameter(Value = "Unified Parallel C")] + UnifiedParalelC, Unkown, Vala, Verilog, Vhdl, + [Parameter(Value = "VimL")] VimL, VisualBasic, Volt, Wisp, Xc, Xml, + [Parameter(Value = "XProc")] XProc, + [Parameter(Value = "XQuery")] XQuery, + Xs, Xslt, - XLend + Xtend, + Yaml } public enum QualifierOperator From 3c233d19eed72ea92bb9f8371e2a335e5cd7333d Mon Sep 17 00:00:00 2001 From: Haroon Date: Thu, 21 Nov 2013 09:21:33 +0000 Subject: [PATCH 52/76] suppress those languages --- Octokit/Models/Request/SearchTerm.cs | 115 ++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 4 deletions(-) diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 6c4106258c..eab23a6eda 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -258,6 +258,7 @@ public override string ToString() public enum Language { + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Abap")] Abap, [Parameter(Value = "ActionScript")] ActionScript, @@ -266,29 +267,43 @@ public enum Language [Parameter(Value = "AppleScript")] AppleScript, Arc, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Arduino")] Arduino, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Conf")] [Parameter(Value = "ApacheConf")] ApacheConf, Asp, Assembly, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Augeas")] Augeas, - [Parameter(Value = "AutoHotKey")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HotKey")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HotKey")] + [Parameter(Value = "AutoHotkey")] AutoHotKey, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Awk")] Awk, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Batchfile")] Batchfile, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Befunge")] Befunge, [Parameter(Value = "BlitzMax")] BlitzMax, Boo, Bro, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "C")] C, - [Parameter(Value = "C2hs Haskell")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "hs")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "hs")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "hs")] + [Parameter(Value = "C2HS Haskell")] C2hsHaskell, Ceylon, Chuck, Clips, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Clojure")] Clojure, Cobol, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cmake")] Cmake, [Parameter(Value = "C-ObjDump")] CObjDump, @@ -303,64 +318,102 @@ public enum Language [Parameter(Value = "C#")] CSharp, Css, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cpp")] [Parameter(Value = "Cpp-ObjDump")] CppObjDump, Cucumber, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cython")] Cython, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "D")] D, [Parameter(Value = "D-ObjDump")] DObjDump, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Darcs")] [Parameter(Value = "DarcsPatch")] DarcsPatch, Dart, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Dcpu")] [Parameter(Value = "DCPU-16 ASM")] Dcpu16Asm, Dot, Dylan, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Ec")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ec")] Ec, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ecere")] [Parameter(Value = "Ecere Projects")] EcereProjects, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ecl")] Ecl, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Edn")] Edn, Eiffel, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Elixer")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Elixer")] Elixer, Elm, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Emacs")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Emacs")] EmacsLisp, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Erlang")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Erlang")] Erlang, [Parameter(Value = "F#")] FSharp, Factor, Fancy, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Fantom")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Fantom")] Fantom, Fish, Forth, Fortran, Gas, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Genshi")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Genshi")] Genshi, [Parameter(Value = "Gentoo Build")] GentooBuild, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Eclass")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Eclass")] [Parameter(Value = "Gentoo Eclass")] GentooEclass, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gettext")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gettext")] [Parameter(Value = "Gettext Catalog")] GettextCatalog, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Glsl")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Glsl")] Glsl, Go, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gosu")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gosu")] Gosu, Groff, Groovy, [Parameter(Value = "Groovy Server Pages")] GroovyServerPages, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Haml")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Haml")] Haml, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HandleBars")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HandleBars")] [Parameter(Value = "HandleBars")] HandleBars, Haskell, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Haxe")] Haxe, Http, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ini")] Ini, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Io")] Io, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ioke")] Ioke, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Irc")] [Parameter(Value = "IRC log")] IrcLog, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "J")] J, Java, [Parameter(Value = "Java Server Pages")] @@ -368,9 +421,11 @@ public enum Language JavaScript, Json, Julia, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Kotlin")] Kotlin, Lasso, Less, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Lfe")] Lfe, [Parameter(Value = "LillyPond")] LillyPond, @@ -380,42 +435,64 @@ public enum Language LiterateHaskell, [Parameter(Value = "LiveScript")] LiveScript, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Llvm")] Llvm, Logos, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Logtalk")] Logtalk, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Lua")] Lua, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "M")] M, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Makefile")] Makefile, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mako")] Mako, Markdown, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Matlab")] Matlab, Max, [Parameter(Value = "MiniD")] MiniD, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mirah")] Mirah, Monkey, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Moocode")] Moocode, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Moonscript")] Moonscript, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mupad")] Mupad, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Myghty")] Myghty, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Nemerle")] Nemerle, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Nginx")] Nginx, Nimrod, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Nsis")] Nsis, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Nu")] Nu, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Num")] [Parameter(Value = "NumPY")] NumPY, [Parameter(Value = "ObjDump")] ObjDump, ObjectiveC, ObjectiveJ, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Caml")] [Parameter(Value = "OCaml")] OCaml, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Omgrofl")] Omgrofl, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ooc")] Ooc, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Opa")] Opa, [Parameter(Value = "OpenCL")] OpenCL, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Abl")] [Parameter(Value = "OpenEdge ABL")] OpenEdgeAbl, Parrot, @@ -425,6 +502,7 @@ public enum Language ParrotInternalRepresentation, Pascal, Perl, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Php")] Php, Pike, [Parameter(Value = "PogoScript")] @@ -437,27 +515,38 @@ public enum Language [Parameter(Value = "Pure Data")] PureData, Python, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Traceback")] [Parameter(Value = "Python traceback")] PythonTraceback, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "R")] R, Racket, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ragel")] [Parameter(Value = "Ragel in Ruby Host")] RagelInRubyHost, [Parameter(Value = "Raw token data")] RawTokenData, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Rebol")] Rebol, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Redcode")] Redcode, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "ReStructured")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Re")] [Parameter(Value = "reStructuredText")] ReStructuredText, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Rhtml")] Rhtml, Rouge, Ruby, Rust, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scala")] Scala, Scheme, Sage, Sass, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scilab")] Scilab, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scss")] Scss, Self, Shell, @@ -467,40 +556,58 @@ public enum Language Squirrel, [Parameter(Value = "Standard ML")] StandardML, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "SuperCollider")] [Parameter(Value = "SuperCollider")] SuperCollider, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Tcl")] Tcl, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Tcsh")] Tcsh, Tea, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Te")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Te")] [Parameter(Value = "TeX")] TeX, Textile, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Toml")] Toml, Turing, Twig, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Txl")] Txl, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "TypeScript")] [Parameter(Value = "TypeScript")] TypeScript, - [Parameter(Value = "Unified Parallel C")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Paralel")] + [Parameter(Value = "Unified Paralel C")] UnifiedParalelC, - Unkown, + Unknown, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Vala")] Vala, Verilog, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Vhdl")] Vhdl, [Parameter(Value = "VimL")] VimL, VisualBasic, Volt, Wisp, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Xc")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Xc")] Xc, Xml, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Proc")] [Parameter(Value = "XProc")] XProc, [Parameter(Value = "XQuery")] XQuery, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Xs")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Xs")] Xs, Xslt, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Xtend")] Xtend, + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Yaml")] Yaml } From 056eea5b3389544017911a57385d6722d61d5adc Mon Sep 17 00:00:00 2001 From: Haroon Date: Thu, 21 Nov 2013 09:32:38 +0000 Subject: [PATCH 53/76] Cleaned up ctor IEnumerable list - not exposing list, added test for user qualifier --- Octokit.Tests/Clients/SearchClientTests.cs | 12 ++++++++++++ Octokit/Models/Request/SearchTerm.cs | 14 ++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 51019d13b2..39c422aac0 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -160,6 +160,18 @@ public void TestingTheInQualifier() connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } + [Fact] + public void TestingTheUserQualifier() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the Description contains rails and user/org is 'github' + var request = new RepositoriesRequest("rails", user: "github"); + + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } } public class TheSearchIssuesMethod diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index eab23a6eda..7f69fd16c3 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -10,15 +10,8 @@ namespace Octokit /// public class RepositoriesRequest { - public RepositoriesRequest(string term) - { - Term = term; - Page = 1; - PerPage = 100; - } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language? language = null, List inQualifiers = null) + public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language? language = null, IEnumerable inQualifiers = null, string user = null) { Term = term; Page = 1; @@ -27,8 +20,9 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R Stars = stars; Forks = forks; Language = language; + User = user; - if (inQualifiers != null && inQualifiers.Count > 0) + if (inQualifiers != null && inQualifiers.Count() > 0) In = inQualifiers.Distinct().ToList(); } @@ -64,7 +58,7 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R /// Without the qualifier, only the name and description are searched. /// https://help.github.com/articles/searching-repositories#search-in /// - public List In { get; set; } + public IEnumerable In { get; set; } /// /// Filters repositories based on the number of forks, and/or whether forked repositories should be included in the results at all. From 387ab74bbb3f9c28ad9baad76b973052b5cf9989 Mon Sep 17 00:00:00 2001 From: Haroon Date: Thu, 21 Nov 2013 09:38:01 +0000 Subject: [PATCH 54/76] Added sort to searching --- Octokit.Tests/Clients/SearchClientTests.cs | 13 ++++++++++++ Octokit/Models/Request/SearchTerm.cs | 23 ++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 39c422aac0..a949494eb5 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -172,6 +172,19 @@ public void TestingTheUserQualifier() connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } + + [Fact] + public void TestingTheSortParameter() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the Description contains rails and user/org is 'github' + var request = new RepositoriesRequest("rails", sort: RepoSearchSort.Forks); + + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } } public class TheSearchIssuesMethod diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 7f69fd16c3..8f099bbd35 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -11,7 +11,8 @@ namespace Octokit public class RepositoriesRequest { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language? language = null, IEnumerable inQualifiers = null, string user = null) + public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language? language = null, + IEnumerable inQualifiers = null, string user = null, RepoSearchSort? sort = null) { Term = term; Page = 1; @@ -21,6 +22,7 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R Forks = forks; Language = language; User = user; + Sort = sort; if (inQualifiers != null && inQualifiers.Count() > 0) In = inQualifiers.Distinct().ToList(); @@ -36,7 +38,7 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R /// For http://developer.github.com/v3/search/#search-repositories /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. /// - public string Sort { get; set; } + public RepoSearchSort? Sort { get; set; } /// /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. @@ -152,6 +154,7 @@ public System.Collections.Generic.IDictionary Parameters var d = new System.Collections.Generic.Dictionary(); d.Add("page", Page.ToString()); d.Add("per_page", PerPage.ToString()); + d.Add("sort", Sort.ToString()); d.Add("q", Term + " " + MergeParameters()); //add qualifiers onto the search term return d; } @@ -614,6 +617,22 @@ public enum QualifierOperator GreaterOrEqualTo// >= } + public enum RepoSearchSort + { + /// + /// search by number of stars + /// + Stars, + /// + /// search by number of forks + /// + Forks, + /// + /// search by last updated + /// + Updated + } + /// /// Searching Users /// From f557d15bcfb04194b644710d59146c9e92fe9df6 Mon Sep 17 00:00:00 2001 From: Haroon Date: Thu, 21 Nov 2013 09:54:53 +0000 Subject: [PATCH 55/76] added fork qualifier --- Octokit.Tests/Clients/SearchClientTests.cs | 13 ++++++++++ Octokit/Models/Request/SearchTerm.cs | 28 +++++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index a949494eb5..40b82bc0f0 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -134,6 +134,19 @@ public void TestingTheForksQualifier() connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } + [Fact] + public void TestingTheForkQualifier() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //search repos that contains rails and forks are included in the search + var request = new RepositoriesRequest("rails", fork: ForkQualifier.IncludeForks); + + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } + [Fact] public void TestingTheLangaugeQualifier() { diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index 8f099bbd35..b4787fc448 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -11,7 +11,7 @@ namespace Octokit public class RepositoriesRequest { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, Language? language = null, + public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, ForkQualifier? fork = null, Language? language = null, IEnumerable inQualifiers = null, string user = null, RepoSearchSort? sort = null) { Term = term; @@ -20,6 +20,7 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R Size = size; Stars = stars; Forks = forks; + Fork = fork; Language = language; User = user; Sort = sort; @@ -72,7 +73,7 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R /// Filters repositories based whether forked repositories should be included in the results at all. /// https://help.github.com/articles/searching-repositories#forks /// - public bool? Fork { get; set; } + public ForkQualifier? Fork { get; set; } /// /// The size qualifier finds repository's that match a certain size (in kilobytes). @@ -123,6 +124,11 @@ public string MergeParameters() { parameters.Add(String.Format("forks:{0}", Forks)); } + + if (Fork != null) + { + parameters.Add(String.Format("fork:{0}", Fork)); + } if (Stars != null) { @@ -131,7 +137,7 @@ public string MergeParameters() if (Language != null) { - parameters.Add(String.Format("language:{0}", Language.Value.ToString())); + parameters.Add(String.Format("language:{0}", Language)); } if (User.IsNotBlank()) @@ -633,6 +639,22 @@ public enum RepoSearchSort Updated } + public enum ForkQualifier + { + /// + /// only search for forked repos + /// + OnlyForks, + /// + /// include forked repos into the search + /// + IncludeForks, + /// + /// forks are not included in the search (default behaviour) + /// + ExcludeForks + } + /// /// Searching Users /// From 267eb6831a64e8517ef3c36a0d5de9b1d074ef0a Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 22 Nov 2013 09:47:30 +0000 Subject: [PATCH 56/76] added created and updated qualifiers we use the new DateRange class to achieve date searches --- Octokit.Tests/Clients/SearchClientTests.cs | 28 ++++++- Octokit/Models/Request/SearchTerm.cs | 91 +++++++++++++++++++++- 2 files changed, 114 insertions(+), 5 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 40b82bc0f0..e453b126c0 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -146,7 +146,7 @@ public void TestingTheForkQualifier() connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } - + [Fact] public void TestingTheLangaugeQualifier() { @@ -173,6 +173,32 @@ public void TestingTheInQualifier() connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } + [Fact] + public void TestingTheCreatedQualifier() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the search contains 'github' and has been created after year jan 1 2011 + var request = new RepositoriesRequest("github", created: DateRange.GreaterThan(new DateTime(2011, 1, 1))); + + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } + + [Fact] + public void TestingTheUpdatedQualifier() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the search contains 'github' and has been pushed before year jan 1 2013 + var request = new RepositoriesRequest("github", updated: DateRange.LessThan(new DateTime(2013, 1, 1))); + + client.SearchRepo(request); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + } + [Fact] public void TestingTheUserQualifier() { diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchTerm.cs index b4787fc448..baf85abed7 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchTerm.cs @@ -12,7 +12,7 @@ public class RepositoriesRequest { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, ForkQualifier? fork = null, Language? language = null, - IEnumerable inQualifiers = null, string user = null, RepoSearchSort? sort = null) + IEnumerable inQualifiers = null, string user = null, DateRange created = null, DateRange updated = null, RepoSearchSort? sort = null) { Term = term; Page = 1; @@ -24,6 +24,8 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R Language = language; User = user; Sort = sort; + Created = created; + Updated = updated; if (inQualifiers != null && inQualifiers.Count() > 0) In = inQualifiers.Distinct().ToList(); @@ -100,10 +102,16 @@ public RepositoriesRequest(string term, Range size = null, Range stars = null, R public string User { get; set; } /// - /// Filters repositories based on times of creation, or when they were last updated. + /// Filters repositories based on times of creation. /// https://help.github.com/articles/searching-repositories#created-and-last-updated /// - public string Created { get; set; } + public DateRange Created { get; set; } + + /// + /// Filters repositories based on when they were last updated. + /// https://help.github.com/articles/searching-repositories#created-and-last-updated + /// + public DateRange Updated { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] public string MergeParameters() @@ -145,6 +153,16 @@ public string MergeParameters() parameters.Add(String.Format("user:{0}", User)); } + if (Created != null) + { + parameters.Add(String.Format("created:{0}", Created)); + } + + if (Updated != null) + { + parameters.Add(String.Format("pushed:{0}", Updated)); + } + return String.Join("+", parameters); } @@ -180,7 +198,7 @@ public enum InQualifier } /// - /// Helper method in generating the range values for a qualifer e.g. In or Size qualifiers + /// Helper class in generating the range values for a qualifer e.g. In or Size qualifiers /// public class Range { @@ -259,6 +277,71 @@ public override string ToString() } } + /// + /// helper class in generating the date range values for the date qualifier e.g. + /// https://help.github.com/articles/searching-repositories#created-and-last-updated + /// + public class DateRange + { + private string query = string.Empty; + + /// + /// Matches repositories with regards to the date + /// We will use the to see what operator will be applied to the date qualifier + /// + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.DateTime.ToString(System.String)"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] + public DateRange(DateTime date, QualifierOperator op) + { + switch (op) + { + case QualifierOperator.GreaterThan: + query = string.Format(">{0}", date.ToString("yyyy-mm-dd")); + break; + case QualifierOperator.LessThan: + query = string.Format("<{0}", date.ToString("yyyy-mm-dd")); + break; + case QualifierOperator.LessOrEqualTo: + query = string.Format("<={0}", date.ToString("yyyy-mm-dd")); + break; + case QualifierOperator.GreaterOrEqualTo: + query = string.Format(">={0}", date.ToString("yyyy-mm-dd")); + break; + default: + break; + } + } + + public static DateRange LessThan(DateTime date) + { + return new DateRange(date, QualifierOperator.LessThan); + } + + public static DateRange LessThanOrEquals(DateTime date) + { + return new DateRange(date, QualifierOperator.LessOrEqualTo); + } + + public static DateRange GreaterThan(DateTime date) + { + return new DateRange(date, QualifierOperator.GreaterThan); + } + + public static DateRange GreaterThanOrEquals(DateTime date) + { + return new DateRange(date, QualifierOperator.GreaterOrEqualTo); + } + + public override string ToString() + { + return query; + } + } + + /// + /// lanuages that can be searched on in github + /// https://help.github.com/articles/searching-repositories#languages + /// public enum Language { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Abap")] From 2bcb5b992443a3e7493448d055dc853d973075f5 Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 22 Nov 2013 10:23:43 +0000 Subject: [PATCH 57/76] Separate out the classes for readability was too messy, fixed all relevant projects to contain the new classes. --- Octokit.Tests/Clients/SearchClientTests.cs | 34 +-- Octokit/Clients/ISearchClient.cs | 8 +- Octokit/Clients/SearchClient.cs | 8 +- Octokit/Models/Request/SearchCodeRequest.cs | 71 +++++++ Octokit/Models/Request/SearchIssuesRequest.cs | 72 +++++++ ...chTerm.cs => SearchRepositoriesRequest.cs} | 200 +----------------- Octokit/Models/Request/SearchUsersRequest.cs | 72 +++++++ Octokit/Octokit-Mono.csproj | 5 +- Octokit/Octokit-MonoAndroid.csproj | 6 +- Octokit/Octokit-Monotouch.csproj | 6 +- Octokit/Octokit-netcore45.csproj | 5 +- Octokit/Octokit.csproj | 5 +- 12 files changed, 266 insertions(+), 226 deletions(-) create mode 100644 Octokit/Models/Request/SearchCodeRequest.cs create mode 100644 Octokit/Models/Request/SearchIssuesRequest.cs rename Octokit/Models/Request/{SearchTerm.cs => SearchRepositoriesRequest.cs} (83%) create mode 100644 Octokit/Models/Request/SearchUsersRequest.cs diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index e453b126c0..f734249328 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -29,7 +29,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchUsers(new UsersRequest("something")); + client.SearchUsers(new SearchUsersRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/users"), Arg.Any>()); } @@ -48,7 +48,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchRepo(new RepositoriesRequest("something")); + client.SearchRepo(new SearchRepositoriesRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); } @@ -67,7 +67,7 @@ public void CheckingOutIfTheApiIsSweet() var connection = Substitute.For(); var client = new SearchClient(connection); - var request = new RepositoriesRequest("something"); + var request = new SearchRepositoriesRequest("something"); //method 1... request.Size = new Range(55); //match 55Mb Exactly @@ -86,10 +86,10 @@ public void CheckingOutIfTheApiIsSweet() //method 2... //check sizes for repos that are greater than 50 MB - request = new RepositoriesRequest("github", size: Range.GreaterThan(50)); + request = new SearchRepositoriesRequest("github", size: Range.GreaterThan(50)); //check sizes for repos that are greater than 50 MB and has less than 5000 stargazers - request = new RepositoriesRequest("github", size: Range.GreaterThan(50), stars: Range.LessThan(5000)); + request = new SearchRepositoriesRequest("github", size: Range.GreaterThan(50), stars: Range.LessThan(5000)); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); @@ -101,7 +101,7 @@ public void TestingTheSizeQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //check sizes for repos that are greater than 50 MB - var request = new RepositoriesRequest("github", size: Range.GreaterThan(50)); + var request = new SearchRepositoriesRequest("github", size: Range.GreaterThan(50)); client.SearchRepo(request); @@ -114,7 +114,7 @@ public void TestingTheStarsQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos whos stargazers are greater than 500 - var request = new RepositoriesRequest("github", stars: Range.GreaterThan(500)); + var request = new SearchRepositoriesRequest("github", stars: Range.GreaterThan(500)); client.SearchRepo(request); @@ -127,7 +127,7 @@ public void TestingTheForksQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos which has forks that are greater than 50 - var request = new RepositoriesRequest("github", forks: Range.GreaterThan(50)); + var request = new SearchRepositoriesRequest("github", forks: Range.GreaterThan(50)); client.SearchRepo(request); @@ -140,7 +140,7 @@ public void TestingTheForkQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //search repos that contains rails and forks are included in the search - var request = new RepositoriesRequest("rails", fork: ForkQualifier.IncludeForks); + var request = new SearchRepositoriesRequest("rails", fork: ForkQualifier.IncludeForks); client.SearchRepo(request); @@ -153,7 +153,7 @@ public void TestingTheLangaugeQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos whos language is Ruby - var request = new RepositoriesRequest("github", language: Language.Ruby); + var request = new SearchRepositoriesRequest("github", language: Language.Ruby); client.SearchRepo(request); @@ -166,7 +166,7 @@ public void TestingTheInQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the Description contains the test 'github' - var request = new RepositoriesRequest("github", inQualifiers: new List() { { InQualifier.Description } }); + var request = new SearchRepositoriesRequest("github", inQualifiers: new List() { { InQualifier.Description } }); client.SearchRepo(request); @@ -179,7 +179,7 @@ public void TestingTheCreatedQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the search contains 'github' and has been created after year jan 1 2011 - var request = new RepositoriesRequest("github", created: DateRange.GreaterThan(new DateTime(2011, 1, 1))); + var request = new SearchRepositoriesRequest("github", created: DateRange.GreaterThan(new DateTime(2011, 1, 1))); client.SearchRepo(request); @@ -192,7 +192,7 @@ public void TestingTheUpdatedQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the search contains 'github' and has been pushed before year jan 1 2013 - var request = new RepositoriesRequest("github", updated: DateRange.LessThan(new DateTime(2013, 1, 1))); + var request = new SearchRepositoriesRequest("github", updated: DateRange.LessThan(new DateTime(2013, 1, 1))); client.SearchRepo(request); @@ -205,7 +205,7 @@ public void TestingTheUserQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the Description contains rails and user/org is 'github' - var request = new RepositoriesRequest("rails", user: "github"); + var request = new SearchRepositoriesRequest("rails", user: "github"); client.SearchRepo(request); @@ -218,7 +218,7 @@ public void TestingTheSortParameter() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the Description contains rails and user/org is 'github' - var request = new RepositoriesRequest("rails", sort: RepoSearchSort.Forks); + var request = new SearchRepositoriesRequest("rails", sort: RepoSearchSort.Forks); client.SearchRepo(request); @@ -233,7 +233,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchIssues(new IssuesRequest("something")); + client.SearchIssues(new SearchIssuesRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/issues"), Arg.Any>()); } @@ -252,7 +252,7 @@ public void RequestsTheCorrectUrl() { var connection = Substitute.For(); var client = new SearchClient(connection); - client.SearchCode(new CodeRequest("something")); + client.SearchCode(new SearchCodeRequest("something")); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/code"), Arg.Any>()); } diff --git a/Octokit/Clients/ISearchClient.cs b/Octokit/Clients/ISearchClient.cs index 8c429a0a4a..4ad5d09c06 100644 --- a/Octokit/Clients/ISearchClient.cs +++ b/Octokit/Clients/ISearchClient.cs @@ -16,7 +16,7 @@ public interface ISearchClient /// /// /// List of repos - Task> SearchRepo(RepositoriesRequest search); + Task> SearchRepo(SearchRepositoriesRequest search); /// /// search users @@ -24,7 +24,7 @@ public interface ISearchClient /// /// /// List of users - Task> SearchUsers(UsersRequest search); + Task> SearchUsers(SearchUsersRequest search); /// /// search issues @@ -32,7 +32,7 @@ public interface ISearchClient /// /// /// List of issues - Task> SearchIssues(IssuesRequest search); + Task> SearchIssues(SearchIssuesRequest search); /// /// search code @@ -40,6 +40,6 @@ public interface ISearchClient /// /// /// List of files - Task> SearchCode(CodeRequest search); + Task> SearchCode(SearchCodeRequest search); } } \ No newline at end of file diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index 601147934b..a55a84b3b7 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -22,7 +22,7 @@ public SearchClient(IApiConnection apiConnection) /// /// /// List of repos - public Task> SearchRepo(RepositoriesRequest search) + public Task> SearchRepo(SearchRepositoriesRequest search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/repositories".FormatUri(), search.Parameters); @@ -34,7 +34,7 @@ public Task> SearchRepo(RepositoriesRequest search) /// /// /// List of users - public Task> SearchUsers(UsersRequest search) + public Task> SearchUsers(SearchUsersRequest search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/users".FormatUri(), search.Parameters); @@ -46,7 +46,7 @@ public Task> SearchUsers(UsersRequest search) /// /// /// List of issues - public Task> SearchIssues(IssuesRequest search) + public Task> SearchIssues(SearchIssuesRequest search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/issues".FormatUri(), search.Parameters); @@ -58,7 +58,7 @@ public Task> SearchIssues(IssuesRequest search) /// /// /// List of files - public Task> SearchCode(CodeRequest search) + public Task> SearchCode(SearchCodeRequest search) { Ensure.ArgumentNotNull(search, "search"); return ApiConnection.GetAll("search/code".FormatUri(), search.Parameters); diff --git a/Octokit/Models/Request/SearchCodeRequest.cs b/Octokit/Models/Request/SearchCodeRequest.cs new file mode 100644 index 0000000000..fbb9554d0d --- /dev/null +++ b/Octokit/Models/Request/SearchCodeRequest.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Octokit +{ + /// + /// Searching Code/Files + /// http://developer.github.com/v3/search/#search-code + /// + public class SearchCodeRequest + { + public SearchCodeRequest(string term) + { + Term = term; + Page = 1; + PerPage = 100; + } + + /// + /// The search term + /// + public string Term { get; set; } + + /// + /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. + /// + public string Sort { get; set; } + + /// + /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. + /// + public SortDirection? Order { get; set; } + + /// + /// Page of paginated results + /// + public int Page { get; set; } + + /// + /// Number of items per page + /// + public int PerPage { get; set; } + + /// + /// get the params in the correct format... + /// + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] + public System.Collections.Generic.IDictionary Parameters + { + get + { + var d = new System.Collections.Generic.Dictionary(); + d.Add("q", Term); + d.Add("page", Page.ToString()); + d.Add("per_page ", PerPage.ToString()); + + if (Sort.IsNotBlank()) //only add if not blank + d.Add("sort", Sort); + + if (Order.HasValue) + d.Add("order", Order.Value.ToString()); + + return d; + } + } + } +} diff --git a/Octokit/Models/Request/SearchIssuesRequest.cs b/Octokit/Models/Request/SearchIssuesRequest.cs new file mode 100644 index 0000000000..f5fff6420c --- /dev/null +++ b/Octokit/Models/Request/SearchIssuesRequest.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Octokit +{ + /// + /// Searching Issues + /// + public class SearchIssuesRequest + { + public SearchIssuesRequest(string term) + { + Term = term; + Page = 1; + PerPage = 100; + } + + /// + /// The search terms. This can be any combination of the supported repository search parameters: + /// http://developer.github.com/v3/search/#search-code + /// + public string Term { get; set; } + + /// + /// For http://developer.github.com/v3/search/#search-issues + /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. + /// + public string Sort { get; set; } + + /// + /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. + /// + public SortDirection? Order { get; set; } + + /// + /// Page of paginated results + /// + public int Page { get; set; } + + /// + /// Number of items per page + /// + public int PerPage { get; set; } + + /// + /// get the params in the correct format... + /// + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] + public System.Collections.Generic.IDictionary Parameters + { + get + { + var d = new System.Collections.Generic.Dictionary(); + d.Add("q", Term); + d.Add("page", Page.ToString()); + d.Add("per_page ", PerPage.ToString()); + + if (Sort.IsNotBlank()) //only add if not blank + d.Add("sort", Sort); + + if (Order.HasValue) + d.Add("order", Order.Value.ToString()); + + return d; + } + } + } +} diff --git a/Octokit/Models/Request/SearchTerm.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs similarity index 83% rename from Octokit/Models/Request/SearchTerm.cs rename to Octokit/Models/Request/SearchRepositoriesRequest.cs index baf85abed7..c73dd03e10 100644 --- a/Octokit/Models/Request/SearchTerm.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -8,10 +8,10 @@ namespace Octokit /// /// Searching Repositories /// - public class RepositoriesRequest + public class SearchRepositoriesRequest { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public RepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, ForkQualifier? fork = null, Language? language = null, + public SearchRepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, ForkQualifier? fork = null, Language? language = null, IEnumerable inQualifiers = null, string user = null, DateRange created = null, DateRange updated = null, RepoSearchSort? sort = null) { Term = term; @@ -132,7 +132,7 @@ public string MergeParameters() { parameters.Add(String.Format("forks:{0}", Forks)); } - + if (Fork != null) { parameters.Add(String.Format("fork:{0}", Fork)); @@ -290,7 +290,7 @@ public class DateRange /// We will use the to see what operator will be applied to the date qualifier /// /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.DateTime.ToString(System.String)"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.DateTime.ToString(System.String)"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] public DateRange(DateTime date, QualifierOperator op) { switch (op) @@ -737,196 +737,4 @@ public enum ForkQualifier /// ExcludeForks } - - /// - /// Searching Users - /// - public class UsersRequest - { - public UsersRequest(string term) - { - Term = term; - Page = 1; - PerPage = 100; - } - - /// - /// The search terms. This can be any combination of the supported repository search parameters: - /// http://developer.github.com/v3/search/#search-code - /// - public string Term { get; set; } - - /// - /// For http://developer.github.com/v3/search/#search-users - /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. - /// - public string Sort { get; set; } - - /// - /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. - /// - public SortDirection? Order { get; set; } - - /// - /// Page of paginated results - /// - public int Page { get; set; } - - /// - /// Number of items per page - /// - public int PerPage { get; set; } - - /// - /// get the params in the correct format... - /// - /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] - public System.Collections.Generic.IDictionary Parameters - { - get - { - var d = new System.Collections.Generic.Dictionary(); - d.Add("q", Term); - d.Add("page", Page.ToString()); - d.Add("per_page ", PerPage.ToString()); - - if (Sort.IsNotBlank()) //only add if not blank - d.Add("sort", Sort); - - if (Order.HasValue) - d.Add("order", Order.Value.ToString()); - - return d; - } - } - } - - /// - /// Searching Code/Files - /// - public class CodeRequest - { - public CodeRequest(string term) - { - Term = term; - Page = 1; - PerPage = 100; - } - - /// - /// The search terms. This can be any combination of the supported repository search parameters: - /// http://developer.github.com/v3/search/#search-code - /// - public string Term { get; set; } - - /// - /// For http://developer.github.com/v3/search/#search-code - /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. - /// - public string Sort { get; set; } - - /// - /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. - /// - public SortDirection? Order { get; set; } - - /// - /// Page of paginated results - /// - public int Page { get; set; } - - /// - /// Number of items per page - /// - public int PerPage { get; set; } - - /// - /// get the params in the correct format... - /// - /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] - public System.Collections.Generic.IDictionary Parameters - { - get - { - var d = new System.Collections.Generic.Dictionary(); - d.Add("q", Term); - d.Add("page", Page.ToString()); - d.Add("per_page ", PerPage.ToString()); - - if (Sort.IsNotBlank()) //only add if not blank - d.Add("sort", Sort); - - if (Order.HasValue) - d.Add("order", Order.Value.ToString()); - - return d; - } - } - } - - /// - /// Searching Issues - /// - public class IssuesRequest - { - public IssuesRequest(string term) - { - Term = term; - Page = 1; - PerPage = 100; - } - - /// - /// The search terms. This can be any combination of the supported repository search parameters: - /// http://developer.github.com/v3/search/#search-code - /// - public string Term { get; set; } - - /// - /// For http://developer.github.com/v3/search/#search-issues - /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. - /// - public string Sort { get; set; } - - /// - /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. - /// - public SortDirection? Order { get; set; } - - /// - /// Page of paginated results - /// - public int Page { get; set; } - - /// - /// Number of items per page - /// - public int PerPage { get; set; } - - /// - /// get the params in the correct format... - /// - /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] - public System.Collections.Generic.IDictionary Parameters - { - get - { - var d = new System.Collections.Generic.Dictionary(); - d.Add("q", Term); - d.Add("page", Page.ToString()); - d.Add("per_page ", PerPage.ToString()); - - if (Sort.IsNotBlank()) //only add if not blank - d.Add("sort", Sort); - - if (Order.HasValue) - d.Add("order", Order.Value.ToString()); - - return d; - } - } - } } \ No newline at end of file diff --git a/Octokit/Models/Request/SearchUsersRequest.cs b/Octokit/Models/Request/SearchUsersRequest.cs new file mode 100644 index 0000000000..6b1f49c0ce --- /dev/null +++ b/Octokit/Models/Request/SearchUsersRequest.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Octokit +{ + /// + /// Searching Users + /// + public class SearchUsersRequest + { + public SearchUsersRequest(string term) + { + Term = term; + Page = 1; + PerPage = 100; + } + + /// + /// The search terms. This can be any combination of the supported repository search parameters: + /// http://developer.github.com/v3/search/#search-code + /// + public string Term { get; set; } + + /// + /// For http://developer.github.com/v3/search/#search-users + /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. + /// + public string Sort { get; set; } + + /// + /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. + /// + public SortDirection? Order { get; set; } + + /// + /// Page of paginated results + /// + public int Page { get; set; } + + /// + /// Number of items per page + /// + public int PerPage { get; set; } + + /// + /// get the params in the correct format... + /// + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] + public System.Collections.Generic.IDictionary Parameters + { + get + { + var d = new System.Collections.Generic.Dictionary(); + d.Add("q", Term); + d.Add("page", Page.ToString()); + d.Add("per_page ", PerPage.ToString()); + + if (Sort.IsNotBlank()) //only add if not blank + d.Add("sort", Sort); + + if (Order.HasValue) + d.Add("order", Order.Value.ToString()); + + return d; + } + } + } +} diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index ffab9fb127..2c35e03711 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -214,13 +214,16 @@ - + + + + \ No newline at end of file diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index 48aa31af70..6279a5d5a4 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -232,6 +232,10 @@ + + + + - + \ No newline at end of file diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index b03c89fe1f..aa2eebad93 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -227,6 +227,10 @@ + + + + - + \ No newline at end of file diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index b2c0db8e7c..fa6f07a32a 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -212,13 +212,16 @@ - + + + + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index 5ac3e0ff91..e4e329258b 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -55,6 +55,9 @@ + + + @@ -64,7 +67,7 @@ - + From 3607e0d0ebb9c5a3d2453ca3a304408c0b3f94b9 Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 22 Nov 2013 10:27:48 +0000 Subject: [PATCH 58/76] better documentation for date range class --- .../Request/SearchRepositoriesRequest.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index c73dd03e10..532dceae21 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -312,21 +312,45 @@ public DateRange(DateTime date, QualifierOperator op) } } + /// + /// helper method to create a LessThan Date Comparision + /// e.g. "<" 2011 + /// + /// date to be used for comparision (times are ignored) + /// public static DateRange LessThan(DateTime date) { return new DateRange(date, QualifierOperator.LessThan); } + /// + /// helper method to create a LessThanOrEqualTo Date Comparision + /// e.g. "<=" 2011 + /// + /// date to be used for comparision (times are ignored) + /// public static DateRange LessThanOrEquals(DateTime date) { return new DateRange(date, QualifierOperator.LessOrEqualTo); } + /// + /// helper method to create a GreaterThan Date Comparision + /// e.g. ">" 2011 + /// + /// date to be used for comparision (times are ignored) + /// public static DateRange GreaterThan(DateTime date) { return new DateRange(date, QualifierOperator.GreaterThan); } + /// + /// helper method to create a GreaterThanOrEqualTo Date Comparision + /// e.g. ">=" 2011 + /// + /// date to be used for comparision (times are ignored) + /// public static DateRange GreaterThanOrEquals(DateTime date) { return new DateRange(date, QualifierOperator.GreaterOrEqualTo); From 08aaed93b0628e4b4c855e06faea526472eae6c2 Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 22 Nov 2013 10:35:07 +0000 Subject: [PATCH 59/76] renamed to searchqualifieroperator make it clearer what this class is, plus updated all relevant project files. --- Octokit.Tests/Clients/SearchClientTests.cs | 8 ++-- .../Models/Request/SearchQualifierOperator.cs | 20 ++++++++ .../Request/SearchRepositoriesRequest.cs | 46 ++++++++----------- Octokit/Octokit-Mono.csproj | 1 + Octokit/Octokit-netcore45.csproj | 1 + Octokit/Octokit.csproj | 1 + 6 files changed, 45 insertions(+), 32 deletions(-) create mode 100644 Octokit/Models/Request/SearchQualifierOperator.cs diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index f734249328..1bbf7be9c4 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -72,10 +72,10 @@ public void CheckingOutIfTheApiIsSweet() //method 1... request.Size = new Range(55); //match 55Mb Exactly request.Size = new Range(100, 5000); //match repo's between 100 and 5000 MB's - request.Size = new Range(1000, QualifierOperator.GreaterOrEqualTo); //match repo's that are greater than or equal to 1000 - request.Size = new Range(1000, QualifierOperator.LessOrEqualTo); //match repo's that are less than or equal to 1000 - request.Size = new Range(1000, QualifierOperator.LessThan); //match repo's that are less than 1000 - request.Size = new Range(1000, QualifierOperator.GreaterThan); //match repo's that are greater than 1000 + request.Size = new Range(1000, SearchQualifierOperator.GreaterOrEqualTo); //match repo's that are greater than or equal to 1000 + request.Size = new Range(1000, SearchQualifierOperator.LessOrEqualTo); //match repo's that are less than or equal to 1000 + request.Size = new Range(1000, SearchQualifierOperator.LessThan); //match repo's that are less than 1000 + request.Size = new Range(1000, SearchQualifierOperator.GreaterThan); //match repo's that are greater than 1000 request.Size = Range.GreaterThan(5000); request.Size = Range.GreaterThanOrEquals(5000); request.Size = Range.LessThan(5000); diff --git a/Octokit/Models/Request/SearchQualifierOperator.cs b/Octokit/Models/Request/SearchQualifierOperator.cs new file mode 100644 index 0000000000..e4988ae1f7 --- /dev/null +++ b/Octokit/Models/Request/SearchQualifierOperator.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Octokit +{ + /// + /// Used for date and int comparisions in searches + /// + public enum SearchQualifierOperator + { + GreaterThan, // > + LessThan, // < + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "LessOr")] + LessOrEqualTo, // <= + GreaterOrEqualTo// >= + } +} diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 532dceae21..038400979d 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -228,22 +228,21 @@ public Range(int minSize, int maxSize) /// Matches repositories with regards to the size /// We will use the to see what operator will be applied to the size qualifier /// - /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] - public Range(int size, QualifierOperator op) + public Range(int size, SearchQualifierOperator op) { switch (op) { - case QualifierOperator.GreaterThan: + case SearchQualifierOperator.GreaterThan: query = string.Format(">{0}", size.ToString()); break; - case QualifierOperator.LessThan: + case SearchQualifierOperator.LessThan: query = string.Format("<{0}", size.ToString()); break; - case QualifierOperator.LessOrEqualTo: + case SearchQualifierOperator.LessOrEqualTo: query = string.Format("<={0}", size.ToString()); break; - case QualifierOperator.GreaterOrEqualTo: + case SearchQualifierOperator.GreaterOrEqualTo: query = string.Format(">={0}", size.ToString()); break; default: @@ -253,22 +252,22 @@ public Range(int size, QualifierOperator op) public static Range LessThan(int size) { - return new Range(size, QualifierOperator.LessThan); + return new Range(size, SearchQualifierOperator.LessThan); } public static Range LessThanOrEquals(int size) { - return new Range(size, QualifierOperator.LessOrEqualTo); + return new Range(size, SearchQualifierOperator.LessOrEqualTo); } public static Range GreaterThan(int size) { - return new Range(size, QualifierOperator.GreaterThan); + return new Range(size, SearchQualifierOperator.GreaterThan); } public static Range GreaterThanOrEquals(int size) { - return new Range(size, QualifierOperator.GreaterOrEqualTo); + return new Range(size, SearchQualifierOperator.GreaterOrEqualTo); } public override string ToString() @@ -291,20 +290,20 @@ public class DateRange /// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.DateTime.ToString(System.String)"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] - public DateRange(DateTime date, QualifierOperator op) + public DateRange(DateTime date, SearchQualifierOperator op) { switch (op) { - case QualifierOperator.GreaterThan: + case SearchQualifierOperator.GreaterThan: query = string.Format(">{0}", date.ToString("yyyy-mm-dd")); break; - case QualifierOperator.LessThan: + case SearchQualifierOperator.LessThan: query = string.Format("<{0}", date.ToString("yyyy-mm-dd")); break; - case QualifierOperator.LessOrEqualTo: + case SearchQualifierOperator.LessOrEqualTo: query = string.Format("<={0}", date.ToString("yyyy-mm-dd")); break; - case QualifierOperator.GreaterOrEqualTo: + case SearchQualifierOperator.GreaterOrEqualTo: query = string.Format(">={0}", date.ToString("yyyy-mm-dd")); break; default: @@ -320,7 +319,7 @@ public DateRange(DateTime date, QualifierOperator op) /// public static DateRange LessThan(DateTime date) { - return new DateRange(date, QualifierOperator.LessThan); + return new DateRange(date, SearchQualifierOperator.LessThan); } /// @@ -331,7 +330,7 @@ public static DateRange LessThan(DateTime date) /// public static DateRange LessThanOrEquals(DateTime date) { - return new DateRange(date, QualifierOperator.LessOrEqualTo); + return new DateRange(date, SearchQualifierOperator.LessOrEqualTo); } /// @@ -342,7 +341,7 @@ public static DateRange LessThanOrEquals(DateTime date) /// public static DateRange GreaterThan(DateTime date) { - return new DateRange(date, QualifierOperator.GreaterThan); + return new DateRange(date, SearchQualifierOperator.GreaterThan); } /// @@ -353,7 +352,7 @@ public static DateRange GreaterThan(DateTime date) /// public static DateRange GreaterThanOrEquals(DateTime date) { - return new DateRange(date, QualifierOperator.GreaterOrEqualTo); + return new DateRange(date, SearchQualifierOperator.GreaterOrEqualTo); } public override string ToString() @@ -721,15 +720,6 @@ public enum Language Yaml } - public enum QualifierOperator - { - GreaterThan, // > - LessThan, // < - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "LessOr")] - LessOrEqualTo, // <= - GreaterOrEqualTo// >= - } - public enum RepoSearchSort { /// diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index 2c35e03711..f34612fa74 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -224,6 +224,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index fa6f07a32a..b959e284a3 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -222,6 +222,7 @@ + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index e4e329258b..7235c0262c 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -57,6 +57,7 @@ + From f5e4a8c5837fab76ce6b753faad10c110f75e407 Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 22 Nov 2013 10:44:06 +0000 Subject: [PATCH 60/76] better documentation add missing file to mono and touch projs --- .../Request/SearchRepositoriesRequest.cs | 25 +++++++++++++++++-- Octokit/Octokit-MonoAndroid.csproj | 1 + Octokit/Octokit-Monotouch.csproj | 1 + 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 038400979d..3b35994dd6 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -7,6 +7,7 @@ namespace Octokit { /// /// Searching Repositories + /// http://developer.github.com/v3/search/#search-repositories /// public class SearchRepositoriesRequest { @@ -33,12 +34,12 @@ public SearchRepositoriesRequest(string term, Range size = null, Range stars = n /// /// The search terms. This can be any combination of the supported repository search parameters: - /// http://developer.github.com/v3/search/#search-code + /// http://developer.github.com/v3/search/#search-repositories /// public string Term { get; set; } /// - /// For http://developer.github.com/v3/search/#search-repositories + /// For https://help.github.com/articles/searching-repositories#sorting /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. /// public RepoSearchSort? Sort { get; set; } @@ -250,21 +251,33 @@ public Range(int size, SearchQualifierOperator op) } } + /// + /// Helper class that build a with a LessThan comparator used for filtering results + /// public static Range LessThan(int size) { return new Range(size, SearchQualifierOperator.LessThan); } + /// + /// Helper class that build a with a LessThanOrEqual comparator used for filtering results + /// public static Range LessThanOrEquals(int size) { return new Range(size, SearchQualifierOperator.LessOrEqualTo); } + /// + /// Helper class that build a with a GreaterThan comparator used for filtering results + /// public static Range GreaterThan(int size) { return new Range(size, SearchQualifierOperator.GreaterThan); } + /// + /// Helper class that build a with a GreaterThanOrEqualTo comparator used for filtering results + /// public static Range GreaterThanOrEquals(int size) { return new Range(size, SearchQualifierOperator.GreaterOrEqualTo); @@ -720,6 +733,10 @@ public enum Language Yaml } + /// + /// sorting repositories by any of below + /// https://help.github.com/articles/searching-repositories#sorting + /// public enum RepoSearchSort { /// @@ -736,6 +753,10 @@ public enum RepoSearchSort Updated } + /// + /// https://help.github.com/articles/searching-repositories#forks + /// Specifying whether forked repositories should be included in results or not. + /// public enum ForkQualifier { /// diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index 6279a5d5a4..199a49d126 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -236,6 +236,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index aa2eebad93..318caf0809 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -231,6 +231,7 @@ + \ No newline at end of file From 6e5acbb275758ad17754dabd4575f27f40f9aec5 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 25 Nov 2013 10:04:08 +0000 Subject: [PATCH 61/76] using RequestParams base class --- Octokit/Clients/SearchClient.cs | 2 +- Octokit/Models/Request/SearchCodeRequest.cs | 37 +++++---------------- 2 files changed, 10 insertions(+), 29 deletions(-) diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index a55a84b3b7..d008c4a9be 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -61,7 +61,7 @@ public Task> SearchIssues(SearchIssuesRequest search) public Task> SearchCode(SearchCodeRequest search) { Ensure.ArgumentNotNull(search, "search"); - return ApiConnection.GetAll("search/code".FormatUri(), search.Parameters); + return ApiConnection.GetAll("search/code".FormatUri(), search.ToParametersDictionary()); } } } \ No newline at end of file diff --git a/Octokit/Models/Request/SearchCodeRequest.cs b/Octokit/Models/Request/SearchCodeRequest.cs index fbb9554d0d..67cbe3d42f 100644 --- a/Octokit/Models/Request/SearchCodeRequest.cs +++ b/Octokit/Models/Request/SearchCodeRequest.cs @@ -1,4 +1,5 @@ -using System; +using Octokit.Internal; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -10,19 +11,22 @@ namespace Octokit /// Searching Code/Files /// http://developer.github.com/v3/search/#search-code /// - public class SearchCodeRequest + public class SearchCodeRequest : RequestParameters { public SearchCodeRequest(string term) { + Ensure.ArgumentNotNullOrEmptyString(term, "term"); Term = term; Page = 1; PerPage = 100; + Order = SortDirection.Descending; } /// /// The search term /// - public string Term { get; set; } + [Parameter(Key = "q")] + public string Term { get; private set; } /// /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. @@ -32,7 +36,7 @@ public SearchCodeRequest(string term) /// /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. /// - public SortDirection? Order { get; set; } + public SortDirection Order { get; set; } /// /// Page of paginated results @@ -42,30 +46,7 @@ public SearchCodeRequest(string term) /// /// Number of items per page /// + [Parameter(Key = "per_page")] public int PerPage { get; set; } - - /// - /// get the params in the correct format... - /// - /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] - public System.Collections.Generic.IDictionary Parameters - { - get - { - var d = new System.Collections.Generic.Dictionary(); - d.Add("q", Term); - d.Add("page", Page.ToString()); - d.Add("per_page ", PerPage.ToString()); - - if (Sort.IsNotBlank()) //only add if not blank - d.Add("sort", Sort); - - if (Order.HasValue) - d.Add("order", Order.Value.ToString()); - - return d; - } - } } } From ea073022a4112e2b9939c2f2d8562bd131d2d367 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 25 Nov 2013 10:28:27 +0000 Subject: [PATCH 62/76] clean up search code so it fully works for now we need to add all other qualifiers later --- Octokit/Models/Request/SearchCodeRequest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Octokit/Models/Request/SearchCodeRequest.cs b/Octokit/Models/Request/SearchCodeRequest.cs index 67cbe3d42f..73d855e28e 100644 --- a/Octokit/Models/Request/SearchCodeRequest.cs +++ b/Octokit/Models/Request/SearchCodeRequest.cs @@ -31,7 +31,7 @@ public SearchCodeRequest(string term) /// /// Optional Sort field. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. If not provided, results are sorted by best match. /// - public string Sort { get; set; } + //public string Sort { get; set; } //this will need to be re-added /// /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. From 8f35ec75bd493b577825c4af24bfeb099a08333d Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 25 Nov 2013 10:31:31 +0000 Subject: [PATCH 63/76] RequestParams base class for SearchIssuesRequest --- Octokit/Clients/SearchClient.cs | 2 +- Octokit/Models/Request/SearchIssuesRequest.cs | 36 +++++-------------- 2 files changed, 9 insertions(+), 29 deletions(-) diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index d008c4a9be..9fae32aefb 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -49,7 +49,7 @@ public Task> SearchUsers(SearchUsersRequest search) public Task> SearchIssues(SearchIssuesRequest search) { Ensure.ArgumentNotNull(search, "search"); - return ApiConnection.GetAll("search/issues".FormatUri(), search.Parameters); + return ApiConnection.GetAll("search/issues".FormatUri(), search.ToParametersDictionary()); } /// diff --git a/Octokit/Models/Request/SearchIssuesRequest.cs b/Octokit/Models/Request/SearchIssuesRequest.cs index f5fff6420c..b9b1609708 100644 --- a/Octokit/Models/Request/SearchIssuesRequest.cs +++ b/Octokit/Models/Request/SearchIssuesRequest.cs @@ -1,4 +1,5 @@ -using System; +using Octokit.Internal; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -9,31 +10,34 @@ namespace Octokit /// /// Searching Issues /// - public class SearchIssuesRequest + public class SearchIssuesRequest : RequestParameters { public SearchIssuesRequest(string term) { + Ensure.ArgumentNotNullOrEmptyString(term,"term"); Term = term; Page = 1; PerPage = 100; + Order = SortDirection.Descending; } /// /// The search terms. This can be any combination of the supported repository search parameters: /// http://developer.github.com/v3/search/#search-code /// + [Parameter(Key= "q")] public string Term { get; set; } /// /// For http://developer.github.com/v3/search/#search-issues /// Optional Sort field. One of comments, created, or updated. If not provided, results are sorted by best match. /// - public string Sort { get; set; } + //public string Sort { get; set; } //re-add laters /// /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. /// - public SortDirection? Order { get; set; } + public SortDirection Order { get; set; } /// /// Page of paginated results @@ -44,29 +48,5 @@ public SearchIssuesRequest(string term) /// Number of items per page /// public int PerPage { get; set; } - - /// - /// get the params in the correct format... - /// - /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] - public System.Collections.Generic.IDictionary Parameters - { - get - { - var d = new System.Collections.Generic.Dictionary(); - d.Add("q", Term); - d.Add("page", Page.ToString()); - d.Add("per_page ", PerPage.ToString()); - - if (Sort.IsNotBlank()) //only add if not blank - d.Add("sort", Sort); - - if (Order.HasValue) - d.Add("order", Order.Value.ToString()); - - return d; - } - } } } From 30a0e0cbc4aa91dcdde1c5a98e994eb691185853 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 25 Nov 2013 10:33:46 +0000 Subject: [PATCH 64/76] using request params base class --- Octokit/Clients/SearchClient.cs | 2 +- Octokit/Models/Request/SearchUsersRequest.cs | 38 +++++--------------- 2 files changed, 10 insertions(+), 30 deletions(-) diff --git a/Octokit/Clients/SearchClient.cs b/Octokit/Clients/SearchClient.cs index 9fae32aefb..41745a8954 100644 --- a/Octokit/Clients/SearchClient.cs +++ b/Octokit/Clients/SearchClient.cs @@ -37,7 +37,7 @@ public Task> SearchRepo(SearchRepositoriesRequest sear public Task> SearchUsers(SearchUsersRequest search) { Ensure.ArgumentNotNull(search, "search"); - return ApiConnection.GetAll("search/users".FormatUri(), search.Parameters); + return ApiConnection.GetAll("search/users".FormatUri(), search.ToParametersDictionary()); } /// diff --git a/Octokit/Models/Request/SearchUsersRequest.cs b/Octokit/Models/Request/SearchUsersRequest.cs index 6b1f49c0ce..7f1d4509dc 100644 --- a/Octokit/Models/Request/SearchUsersRequest.cs +++ b/Octokit/Models/Request/SearchUsersRequest.cs @@ -1,4 +1,5 @@ -using System; +using Octokit.Internal; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -9,31 +10,34 @@ namespace Octokit /// /// Searching Users /// - public class SearchUsersRequest + public class SearchUsersRequest : RequestParameters { public SearchUsersRequest(string term) { + Ensure.ArgumentNotNullOrEmptyString(term, "term"); Term = term; Page = 1; PerPage = 100; + Order = SortDirection.Descending; } /// /// The search terms. This can be any combination of the supported repository search parameters: /// http://developer.github.com/v3/search/#search-code /// - public string Term { get; set; } + [Parameter(Key="q")] + public string Term { get; private set; } /// /// For http://developer.github.com/v3/search/#search-users /// Optional Sort field. One of followers, repositories, or joined. If not provided, results are sorted by best match. /// - public string Sort { get; set; } + //public string Sort { get; set; } //re-add later /// /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. /// - public SortDirection? Order { get; set; } + public SortDirection Order { get; set; } /// /// Page of paginated results @@ -44,29 +48,5 @@ public SearchUsersRequest(string term) /// Number of items per page /// public int PerPage { get; set; } - - /// - /// get the params in the correct format... - /// - /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] - public System.Collections.Generic.IDictionary Parameters - { - get - { - var d = new System.Collections.Generic.Dictionary(); - d.Add("q", Term); - d.Add("page", Page.ToString()); - d.Add("per_page ", PerPage.ToString()); - - if (Sort.IsNotBlank()) //only add if not blank - d.Add("sort", Sort); - - if (Order.HasValue) - d.Add("order", Order.Value.ToString()); - - return d; - } - } } } From a3f9bc5690f4da6f7594ac9cc74c7125bfc2ffd1 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 25 Nov 2013 10:35:02 +0000 Subject: [PATCH 65/76] private setter --- Octokit/Models/Request/SearchIssuesRequest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Octokit/Models/Request/SearchIssuesRequest.cs b/Octokit/Models/Request/SearchIssuesRequest.cs index b9b1609708..346917c686 100644 --- a/Octokit/Models/Request/SearchIssuesRequest.cs +++ b/Octokit/Models/Request/SearchIssuesRequest.cs @@ -26,7 +26,7 @@ public SearchIssuesRequest(string term) /// http://developer.github.com/v3/search/#search-code /// [Parameter(Key= "q")] - public string Term { get; set; } + public string Term { get; private set; } /// /// For http://developer.github.com/v3/search/#search-issues From 4fd65200e12a05b65795fe2ae3eeba339ae5aa8e Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 25 Nov 2013 10:37:12 +0000 Subject: [PATCH 66/76] better names for qualifiers --- Octokit.Tests/Clients/SearchClientTests.cs | 4 ++-- .../Models/Request/SearchQualifierOperator.cs | 5 ++--- .../Models/Request/SearchRepositoriesRequest.cs | 16 ++++++++-------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 1bbf7be9c4..516ef8aac6 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -72,8 +72,8 @@ public void CheckingOutIfTheApiIsSweet() //method 1... request.Size = new Range(55); //match 55Mb Exactly request.Size = new Range(100, 5000); //match repo's between 100 and 5000 MB's - request.Size = new Range(1000, SearchQualifierOperator.GreaterOrEqualTo); //match repo's that are greater than or equal to 1000 - request.Size = new Range(1000, SearchQualifierOperator.LessOrEqualTo); //match repo's that are less than or equal to 1000 + request.Size = new Range(1000, SearchQualifierOperator.GreaterThanOrEqualTo); //match repo's that are greater than or equal to 1000 + request.Size = new Range(1000, SearchQualifierOperator.LessThanOrEqualTo); //match repo's that are less than or equal to 1000 request.Size = new Range(1000, SearchQualifierOperator.LessThan); //match repo's that are less than 1000 request.Size = new Range(1000, SearchQualifierOperator.GreaterThan); //match repo's that are greater than 1000 request.Size = Range.GreaterThan(5000); diff --git a/Octokit/Models/Request/SearchQualifierOperator.cs b/Octokit/Models/Request/SearchQualifierOperator.cs index e4988ae1f7..712d44a773 100644 --- a/Octokit/Models/Request/SearchQualifierOperator.cs +++ b/Octokit/Models/Request/SearchQualifierOperator.cs @@ -13,8 +13,7 @@ public enum SearchQualifierOperator { GreaterThan, // > LessThan, // < - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "LessOr")] - LessOrEqualTo, // <= - GreaterOrEqualTo// >= + LessThanOrEqualTo, // <= + GreaterThanOrEqualTo// >= } } diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 3b35994dd6..bc6b514c22 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -240,10 +240,10 @@ public Range(int size, SearchQualifierOperator op) case SearchQualifierOperator.LessThan: query = string.Format("<{0}", size.ToString()); break; - case SearchQualifierOperator.LessOrEqualTo: + case SearchQualifierOperator.LessThanOrEqualTo: query = string.Format("<={0}", size.ToString()); break; - case SearchQualifierOperator.GreaterOrEqualTo: + case SearchQualifierOperator.GreaterThanOrEqualTo: query = string.Format(">={0}", size.ToString()); break; default: @@ -264,7 +264,7 @@ public static Range LessThan(int size) /// public static Range LessThanOrEquals(int size) { - return new Range(size, SearchQualifierOperator.LessOrEqualTo); + return new Range(size, SearchQualifierOperator.LessThanOrEqualTo); } /// @@ -280,7 +280,7 @@ public static Range GreaterThan(int size) /// public static Range GreaterThanOrEquals(int size) { - return new Range(size, SearchQualifierOperator.GreaterOrEqualTo); + return new Range(size, SearchQualifierOperator.GreaterThanOrEqualTo); } public override string ToString() @@ -313,10 +313,10 @@ public DateRange(DateTime date, SearchQualifierOperator op) case SearchQualifierOperator.LessThan: query = string.Format("<{0}", date.ToString("yyyy-mm-dd")); break; - case SearchQualifierOperator.LessOrEqualTo: + case SearchQualifierOperator.LessThanOrEqualTo: query = string.Format("<={0}", date.ToString("yyyy-mm-dd")); break; - case SearchQualifierOperator.GreaterOrEqualTo: + case SearchQualifierOperator.GreaterThanOrEqualTo: query = string.Format(">={0}", date.ToString("yyyy-mm-dd")); break; default: @@ -343,7 +343,7 @@ public static DateRange LessThan(DateTime date) /// public static DateRange LessThanOrEquals(DateTime date) { - return new DateRange(date, SearchQualifierOperator.LessOrEqualTo); + return new DateRange(date, SearchQualifierOperator.LessThanOrEqualTo); } /// @@ -365,7 +365,7 @@ public static DateRange GreaterThan(DateTime date) /// public static DateRange GreaterThanOrEquals(DateTime date) { - return new DateRange(date, SearchQualifierOperator.GreaterOrEqualTo); + return new DateRange(date, SearchQualifierOperator.GreaterThanOrEqualTo); } public override string ToString() From e73fdb117d27107cb4a04e7d9014d93c02fe5fd0 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 25 Nov 2013 10:37:46 +0000 Subject: [PATCH 67/76] clean up comments --- Octokit/Models/Request/SearchQualifierOperator.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Octokit/Models/Request/SearchQualifierOperator.cs b/Octokit/Models/Request/SearchQualifierOperator.cs index 712d44a773..3b3d0f8233 100644 --- a/Octokit/Models/Request/SearchQualifierOperator.cs +++ b/Octokit/Models/Request/SearchQualifierOperator.cs @@ -6,9 +6,6 @@ namespace Octokit { - /// - /// Used for date and int comparisions in searches - /// public enum SearchQualifierOperator { GreaterThan, // > From 270cdc8740a46b29dfe7b659cf8ba501dc66ddb9 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 25 Nov 2013 10:43:43 +0000 Subject: [PATCH 68/76] added CultureInfo.InvariantCulture to strings --- .../Request/SearchRepositoriesRequest.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index bc6b514c22..80ad7418b6 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -1,6 +1,7 @@ using Octokit.Internal; using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; namespace Octokit @@ -114,54 +115,53 @@ public SearchRepositoriesRequest(string term, Range size = null, Range stars = n /// public DateRange Updated { get; set; } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object[])"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)")] public string MergeParameters() { var parameters = new List(); if (In != null) { - parameters.Add(String.Format("in:{0}", String.Join(",", In))); + parameters.Add(String.Format(CultureInfo.InvariantCulture, "in:{0}", String.Join(",", In))); } if (Size != null) { - parameters.Add(String.Format("size:{0}", Size)); + parameters.Add(String.Format(CultureInfo.InvariantCulture, "size:{0}", Size)); } if (Forks != null) { - parameters.Add(String.Format("forks:{0}", Forks)); + parameters.Add(String.Format(CultureInfo.InvariantCulture, "forks:{0}", Forks)); } if (Fork != null) { - parameters.Add(String.Format("fork:{0}", Fork)); + parameters.Add(String.Format(CultureInfo.InvariantCulture, "fork:{0}", Fork)); } if (Stars != null) { - parameters.Add(String.Format("stars:{0}", Stars)); + parameters.Add(String.Format(CultureInfo.InvariantCulture, "stars:{0}", Stars)); } if (Language != null) { - parameters.Add(String.Format("language:{0}", Language)); + parameters.Add(String.Format(CultureInfo.InvariantCulture, "language:{0}", Language)); } if (User.IsNotBlank()) { - parameters.Add(String.Format("user:{0}", User)); + parameters.Add(String.Format(CultureInfo.InvariantCulture, "user:{0}", User)); } if (Created != null) { - parameters.Add(String.Format("created:{0}", Created)); + parameters.Add(String.Format(CultureInfo.InvariantCulture, "created:{0}", Created)); } if (Updated != null) { - parameters.Add(String.Format("pushed:{0}", Updated)); + parameters.Add(String.Format(CultureInfo.InvariantCulture, "pushed:{0}", Updated)); } return String.Join("+", parameters); From f48f442768d99deea8965e9575c5e16baf94dd10 Mon Sep 17 00:00:00 2001 From: Haroon Date: Mon, 25 Nov 2013 10:52:32 +0000 Subject: [PATCH 69/76] cleaned up lengthy namespace --- .../Request/SearchRepositoriesRequest.cs | 215 +++++++++--------- 1 file changed, 108 insertions(+), 107 deletions(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 80ad7418b6..182d43cd5e 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -1,6 +1,7 @@ using Octokit.Internal; using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Linq; @@ -380,7 +381,7 @@ public override string ToString() /// public enum Language { - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Abap")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Abap")] Abap, [Parameter(Value = "ActionScript")] ActionScript, @@ -389,43 +390,43 @@ public enum Language [Parameter(Value = "AppleScript")] AppleScript, Arc, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Arduino")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Arduino")] Arduino, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Conf")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Conf")] [Parameter(Value = "ApacheConf")] ApacheConf, Asp, Assembly, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Augeas")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Augeas")] Augeas, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HotKey")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HotKey")] + [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HotKey")] + [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HotKey")] [Parameter(Value = "AutoHotkey")] AutoHotKey, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Awk")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Awk")] Awk, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Batchfile")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Batchfile")] Batchfile, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Befunge")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Befunge")] Befunge, [Parameter(Value = "BlitzMax")] BlitzMax, Boo, Bro, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "C")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "C")] C, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "hs")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "hs")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "hs")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "hs")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "hs")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "hs")] [Parameter(Value = "C2HS Haskell")] C2hsHaskell, Ceylon, Chuck, Clips, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Clojure")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Clojure")] Clojure, Cobol, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cmake")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cmake")] Cmake, [Parameter(Value = "C-ObjDump")] CObjDump, @@ -440,102 +441,102 @@ public enum Language [Parameter(Value = "C#")] CSharp, Css, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cpp")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cpp")] [Parameter(Value = "Cpp-ObjDump")] CppObjDump, Cucumber, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cython")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cython")] Cython, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "D")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "D")] D, [Parameter(Value = "D-ObjDump")] DObjDump, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Darcs")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Darcs")] [Parameter(Value = "DarcsPatch")] DarcsPatch, Dart, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Dcpu")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Dcpu")] [Parameter(Value = "DCPU-16 ASM")] Dcpu16Asm, Dot, Dylan, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Ec")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ec")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Ec")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ec")] Ec, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ecere")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ecere")] [Parameter(Value = "Ecere Projects")] EcereProjects, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ecl")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ecl")] Ecl, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Edn")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Edn")] Edn, Eiffel, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Elixer")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Elixer")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Elixer")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Elixer")] Elixer, Elm, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Emacs")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Emacs")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Emacs")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Emacs")] EmacsLisp, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Erlang")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Erlang")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Erlang")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Erlang")] Erlang, [Parameter(Value = "F#")] FSharp, Factor, Fancy, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Fantom")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Fantom")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Fantom")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Fantom")] Fantom, Fish, Forth, Fortran, Gas, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Genshi")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Genshi")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Genshi")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Genshi")] Genshi, [Parameter(Value = "Gentoo Build")] GentooBuild, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Eclass")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Eclass")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Eclass")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Eclass")] [Parameter(Value = "Gentoo Eclass")] GentooEclass, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gettext")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gettext")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gettext")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gettext")] [Parameter(Value = "Gettext Catalog")] GettextCatalog, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Glsl")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Glsl")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Glsl")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Glsl")] Glsl, Go, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gosu")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gosu")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gosu")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gosu")] Gosu, Groff, Groovy, [Parameter(Value = "Groovy Server Pages")] GroovyServerPages, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Haml")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Haml")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Haml")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Haml")] Haml, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HandleBars")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HandleBars")] + [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HandleBars")] + [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "HandleBars")] [Parameter(Value = "HandleBars")] HandleBars, Haskell, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Haxe")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Haxe")] Haxe, Http, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ini")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ini")] Ini, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Io")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Io")] Io, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ioke")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ioke")] Ioke, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Irc")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Irc")] [Parameter(Value = "IRC log")] IrcLog, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "J")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "J")] J, Java, [Parameter(Value = "Java Server Pages")] @@ -543,11 +544,11 @@ public enum Language JavaScript, Json, Julia, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Kotlin")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Kotlin")] Kotlin, Lasso, Less, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Lfe")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Lfe")] Lfe, [Parameter(Value = "LillyPond")] LillyPond, @@ -557,64 +558,64 @@ public enum Language LiterateHaskell, [Parameter(Value = "LiveScript")] LiveScript, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Llvm")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Llvm")] Llvm, Logos, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Logtalk")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Logtalk")] Logtalk, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Lua")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Lua")] Lua, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "M")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "M")] M, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Makefile")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Makefile")] Makefile, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mako")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mako")] Mako, Markdown, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Matlab")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Matlab")] Matlab, Max, [Parameter(Value = "MiniD")] MiniD, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mirah")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mirah")] Mirah, Monkey, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Moocode")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Moocode")] Moocode, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Moonscript")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Moonscript")] Moonscript, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mupad")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mupad")] Mupad, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Myghty")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Myghty")] Myghty, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Nemerle")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Nemerle")] Nemerle, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Nginx")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Nginx")] Nginx, Nimrod, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Nsis")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Nsis")] Nsis, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Nu")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Nu")] Nu, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Num")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Num")] [Parameter(Value = "NumPY")] NumPY, [Parameter(Value = "ObjDump")] ObjDump, ObjectiveC, ObjectiveJ, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Caml")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Caml")] [Parameter(Value = "OCaml")] OCaml, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Omgrofl")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Omgrofl")] Omgrofl, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ooc")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ooc")] Ooc, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Opa")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Opa")] Opa, [Parameter(Value = "OpenCL")] OpenCL, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Abl")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Abl")] [Parameter(Value = "OpenEdge ABL")] OpenEdgeAbl, Parrot, @@ -624,7 +625,7 @@ public enum Language ParrotInternalRepresentation, Pascal, Perl, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Php")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Php")] Php, Pike, [Parameter(Value = "PogoScript")] @@ -637,38 +638,38 @@ public enum Language [Parameter(Value = "Pure Data")] PureData, Python, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Traceback")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Traceback")] [Parameter(Value = "Python traceback")] PythonTraceback, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "R")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "R")] R, Racket, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ragel")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Ragel")] [Parameter(Value = "Ragel in Ruby Host")] RagelInRubyHost, [Parameter(Value = "Raw token data")] RawTokenData, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Rebol")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Rebol")] Rebol, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Redcode")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Redcode")] Redcode, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "ReStructured")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Re")] + [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "ReStructured")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Re")] [Parameter(Value = "reStructuredText")] ReStructuredText, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Rhtml")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Rhtml")] Rhtml, Rouge, Ruby, Rust, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scala")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scala")] Scala, Scheme, Sage, Sass, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scilab")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scilab")] Scilab, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scss")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scss")] Scss, Self, Shell, @@ -678,58 +679,58 @@ public enum Language Squirrel, [Parameter(Value = "Standard ML")] StandardML, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "SuperCollider")] + [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "SuperCollider")] [Parameter(Value = "SuperCollider")] SuperCollider, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Tcl")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Tcl")] Tcl, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Tcsh")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Tcsh")] Tcsh, Tea, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Te")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Te")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Te")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Te")] [Parameter(Value = "TeX")] TeX, Textile, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Toml")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Toml")] Toml, Turing, Twig, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Txl")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Txl")] Txl, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "TypeScript")] + [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "TypeScript")] [Parameter(Value = "TypeScript")] TypeScript, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Paralel")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Paralel")] [Parameter(Value = "Unified Paralel C")] UnifiedParalelC, Unknown, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Vala")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Vala")] Vala, Verilog, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Vhdl")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Vhdl")] Vhdl, [Parameter(Value = "VimL")] VimL, VisualBasic, Volt, Wisp, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Xc")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Xc")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Xc")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Xc")] Xc, Xml, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Proc")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Proc")] [Parameter(Value = "XProc")] XProc, [Parameter(Value = "XQuery")] XQuery, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Xs")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Xs")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Xs")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Xs")] Xs, Xslt, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Xtend")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Xtend")] Xtend, - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Yaml")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Yaml")] Yaml } From b2edfd259ab762e1fed955bba74672f04eae8e1d Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 30 Nov 2013 08:18:58 +0000 Subject: [PATCH 70/76] cleaned up ctor --- .../Request/SearchRepositoriesRequest.cs | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 182d43cd5e..7fcc6c7925 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -13,22 +13,12 @@ namespace Octokit /// public class SearchRepositoriesRequest { - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public SearchRepositoriesRequest(string term, Range size = null, Range stars = null, Range forks = null, ForkQualifier? fork = null, Language? language = null, - IEnumerable inQualifiers = null, string user = null, DateRange created = null, DateRange updated = null, RepoSearchSort? sort = null) + public SearchRepositoriesRequest(string term, IEnumerable inQualifiers = null) { Term = term; Page = 1; PerPage = 100; - Size = size; - Stars = stars; - Forks = forks; - Fork = fork; - Language = language; - User = user; - Sort = sort; - Created = created; - Updated = updated; + Fork = ForkQualifier.ExcludeForks; if (inQualifiers != null && inQualifiers.Count() > 0) In = inQualifiers.Distinct().ToList(); @@ -66,7 +56,11 @@ public SearchRepositoriesRequest(string term, Range size = null, Range stars = n /// Without the qualifier, only the name and description are searched. /// https://help.github.com/articles/searching-repositories#search-in /// - public IEnumerable In { get; set; } + public IEnumerable In + { + get; + set; + } /// /// Filters repositories based on the number of forks, and/or whether forked repositories should be included in the results at all. @@ -76,9 +70,10 @@ public SearchRepositoriesRequest(string term, Range size = null, Range stars = n /// /// Filters repositories based whether forked repositories should be included in the results at all. + /// Defaults to ExcludeForks /// https://help.github.com/articles/searching-repositories#forks /// - public ForkQualifier? Fork { get; set; } + public ForkQualifier Fork { get; set; } /// /// The size qualifier finds repository's that match a certain size (in kilobytes). From 552288d0585936b6626060d7f9bfd2b74b1e6040 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 30 Nov 2013 08:22:43 +0000 Subject: [PATCH 71/76] add default sort --- Octokit/Models/Request/SearchRepositoriesRequest.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 7fcc6c7925..88faf23719 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -13,15 +13,13 @@ namespace Octokit /// public class SearchRepositoriesRequest { - public SearchRepositoriesRequest(string term, IEnumerable inQualifiers = null) + public SearchRepositoriesRequest(string term) { Term = term; Page = 1; PerPage = 100; Fork = ForkQualifier.ExcludeForks; - - if (inQualifiers != null && inQualifiers.Count() > 0) - In = inQualifiers.Distinct().ToList(); + Order = SortDirection.Descending; } /// @@ -37,9 +35,9 @@ public SearchRepositoriesRequest(string term, IEnumerable inQualifi public RepoSearchSort? Sort { get; set; } /// - /// Optional Sort order if sort parameter is provided. One of asc or desc; the default is desc. + /// Sort order one of asc or desc - the default is desc. /// - public SortDirection? Order { get; set; } + public SortDirection Order { get; set; } /// /// Page of paginated results From ac98dd5eddb562d83acb4b24359bbef4158cbbc2 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 30 Nov 2013 08:25:33 +0000 Subject: [PATCH 72/76] cleaned up in qualifier setter and getter --- Octokit/Models/Request/SearchRepositoriesRequest.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 88faf23719..8010d4fa2f 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -49,6 +49,8 @@ public SearchRepositoriesRequest(string term) /// public int PerPage { get; set; } + private IEnumerable _inQualifier; + /// /// The in qualifier limits what fields are searched. With this qualifier you can restrict the search to just the repository name, description, README, or any combination of these. /// Without the qualifier, only the name and description are searched. @@ -56,8 +58,15 @@ public SearchRepositoriesRequest(string term) /// public IEnumerable In { - get; - set; + get + { + return _inQualifier; + } + set + { + if (value != null && value.Count() > 0) + _inQualifier = value.Distinct().ToList(); + } } /// From f91357e20378b14924ccd278b9d659e78c0bffcd Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 30 Nov 2013 08:25:48 +0000 Subject: [PATCH 73/76] fork is never null so pass it on always --- Octokit/Models/Request/SearchRepositoriesRequest.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 8010d4fa2f..b63081aeeb 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -137,10 +137,7 @@ public string MergeParameters() parameters.Add(String.Format(CultureInfo.InvariantCulture, "forks:{0}", Forks)); } - if (Fork != null) - { - parameters.Add(String.Format(CultureInfo.InvariantCulture, "fork:{0}", Fork)); - } + parameters.Add(String.Format(CultureInfo.InvariantCulture, "fork:{0}", Fork)); if (Stars != null) { From 0e860afbe3e68fe802e17930cad6cc0cc3403988 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 30 Nov 2013 08:30:32 +0000 Subject: [PATCH 74/76] cleaned up tests --- Octokit.Tests/Clients/SearchClientTests.cs | 66 +++++++--------------- 1 file changed, 20 insertions(+), 46 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 516ef8aac6..8ff4b32360 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -59,49 +59,14 @@ public async Task EnsuresNonNullArguments() AssertEx.Throws(async () => await client.SearchRepo(null)); } - [Fact] - public void CheckingOutIfTheApiIsSweet() - { - //lets see how this API fairs out with comments from @shiftkey and @haacked. - - var connection = Substitute.For(); - var client = new SearchClient(connection); - - var request = new SearchRepositoriesRequest("something"); - - //method 1... - request.Size = new Range(55); //match 55Mb Exactly - request.Size = new Range(100, 5000); //match repo's between 100 and 5000 MB's - request.Size = new Range(1000, SearchQualifierOperator.GreaterThanOrEqualTo); //match repo's that are greater than or equal to 1000 - request.Size = new Range(1000, SearchQualifierOperator.LessThanOrEqualTo); //match repo's that are less than or equal to 1000 - request.Size = new Range(1000, SearchQualifierOperator.LessThan); //match repo's that are less than 1000 - request.Size = new Range(1000, SearchQualifierOperator.GreaterThan); //match repo's that are greater than 1000 - request.Size = Range.GreaterThan(5000); - request.Size = Range.GreaterThanOrEquals(5000); - request.Size = Range.LessThan(5000); - request.Size = Range.LessThanOrEquals(5000); - - client.SearchRepo(request); - - //method 2... - - //check sizes for repos that are greater than 50 MB - request = new SearchRepositoriesRequest("github", size: Range.GreaterThan(50)); - - //check sizes for repos that are greater than 50 MB and has less than 5000 stargazers - request = new SearchRepositoriesRequest("github", size: Range.GreaterThan(50), stars: Range.LessThan(5000)); - - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); - } - [Fact] public void TestingTheSizeQualifier() { var connection = Substitute.For(); var client = new SearchClient(connection); //check sizes for repos that are greater than 50 MB - var request = new SearchRepositoriesRequest("github", size: Range.GreaterThan(50)); + var request = new SearchRepositoriesRequest("github"); + request.Size = Range.GreaterThan(50); client.SearchRepo(request); @@ -114,7 +79,8 @@ public void TestingTheStarsQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos whos stargazers are greater than 500 - var request = new SearchRepositoriesRequest("github", stars: Range.GreaterThan(500)); + var request = new SearchRepositoriesRequest("github"); + request.Stars = Range.GreaterThan(500); client.SearchRepo(request); @@ -127,7 +93,8 @@ public void TestingTheForksQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos which has forks that are greater than 50 - var request = new SearchRepositoriesRequest("github", forks: Range.GreaterThan(50)); + var request = new SearchRepositoriesRequest("github"); + request.Forks = Range.GreaterThan(50); client.SearchRepo(request); @@ -140,7 +107,8 @@ public void TestingTheForkQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //search repos that contains rails and forks are included in the search - var request = new SearchRepositoriesRequest("rails", fork: ForkQualifier.IncludeForks); + var request = new SearchRepositoriesRequest("rails"); + request.Fork = ForkQualifier.IncludeForks; client.SearchRepo(request); @@ -153,7 +121,8 @@ public void TestingTheLangaugeQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos whos language is Ruby - var request = new SearchRepositoriesRequest("github", language: Language.Ruby); + var request = new SearchRepositoriesRequest("github"); + request.Language = Language.Ruby; client.SearchRepo(request); @@ -166,7 +135,8 @@ public void TestingTheInQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the Description contains the test 'github' - var request = new SearchRepositoriesRequest("github", inQualifiers: new List() { { InQualifier.Description } }); + var request = new SearchRepositoriesRequest("github"); + request.In = new List() { { InQualifier.Description } }; client.SearchRepo(request); @@ -179,7 +149,8 @@ public void TestingTheCreatedQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the search contains 'github' and has been created after year jan 1 2011 - var request = new SearchRepositoriesRequest("github", created: DateRange.GreaterThan(new DateTime(2011, 1, 1))); + var request = new SearchRepositoriesRequest("github"); + request.Created = DateRange.GreaterThan(new DateTime(2011, 1, 1)); client.SearchRepo(request); @@ -192,7 +163,8 @@ public void TestingTheUpdatedQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the search contains 'github' and has been pushed before year jan 1 2013 - var request = new SearchRepositoriesRequest("github", updated: DateRange.LessThan(new DateTime(2013, 1, 1))); + var request = new SearchRepositoriesRequest("github"); + request.Updated = DateRange.LessThan(new DateTime(2013, 1, 1)); client.SearchRepo(request); @@ -205,7 +177,8 @@ public void TestingTheUserQualifier() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the Description contains rails and user/org is 'github' - var request = new SearchRepositoriesRequest("rails", user: "github"); + var request = new SearchRepositoriesRequest("rails"); + request.User = "github"; client.SearchRepo(request); @@ -218,7 +191,8 @@ public void TestingTheSortParameter() var connection = Substitute.For(); var client = new SearchClient(connection); //get repos where the Description contains rails and user/org is 'github' - var request = new SearchRepositoriesRequest("rails", sort: RepoSearchSort.Forks); + var request = new SearchRepositoriesRequest("rails"); + request.Sort = RepoSearchSort.Forks; client.SearchRepo(request); From 619f17e183cc28038d8d20eae1050f2181bfd515 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sun, 1 Dec 2013 11:01:55 +0000 Subject: [PATCH 75/76] changed to any() --- Octokit/Models/Request/SearchRepositoriesRequest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index b63081aeeb..81cbb263b9 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -64,7 +64,7 @@ public IEnumerable In } set { - if (value != null && value.Count() > 0) + if (value != null && value.Any()) _inQualifier = value.Distinct().ToList(); } } From 78d7e7dc490e720b37cc327f973dc04675407260 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sun, 1 Dec 2013 11:05:08 +0000 Subject: [PATCH 76/76] less noise here... --- Octokit.Tests/Clients/SearchClientTests.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 8ff4b32360..bc4659318b 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -136,8 +136,7 @@ public void TestingTheInQualifier() var client = new SearchClient(connection); //get repos where the Description contains the test 'github' var request = new SearchRepositoriesRequest("github"); - request.In = new List() { { InQualifier.Description } }; - + request.In = new[] { InQualifier.Description }; client.SearchRepo(request); connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>());