From 720cd17770c1157ca5ed5dfb1e4f950c304322c7 Mon Sep 17 00:00:00 2001 From: Jeff Foster <jeff.foster@acm.org> Date: Mon, 10 Aug 2015 11:58:53 +0100 Subject: [PATCH 1/2] add filename for code search --- Octokit.Tests/Clients/SearchClientTests.cs | 15 +++++++++++++++ Octokit/Models/Request/SearchCodeRequest.cs | 13 +++++++++++++ 2 files changed, 28 insertions(+) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index d089ab86af..47b478756f 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -1495,6 +1495,21 @@ public void TestingTheExtensionQualifier() Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+extension:cs")); } + [Fact] + public void TestingTheFileNameQualifier() + { + var connection = Substitute.For<IApiConnection>(); + var client = new SearchClient(connection); + var request = new SearchCodeRequest("something"); + request.FileName = "packages.config"; + + client.SearchCode(request); + + connection.Received().Get<SearchCodeResult>( + Arg.Is<Uri>(u => u.ToString() == "search/code"), + Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+filename:packages.config")); + } + [Fact] public void TestingTheUserQualifier() { diff --git a/Octokit/Models/Request/SearchCodeRequest.cs b/Octokit/Models/Request/SearchCodeRequest.cs index 570b5fb814..21c89f2a85 100644 --- a/Octokit/Models/Request/SearchCodeRequest.cs +++ b/Octokit/Models/Request/SearchCodeRequest.cs @@ -106,6 +106,14 @@ public IEnumerable<CodeInQualifier> In /// </remarks> public string Extension { get; set; } + /// <summary> + /// Matches specific file names + /// </summary> + /// <remarks> + /// https://help.github.com/articles/searching-code/#search-by-filename + /// </remarks> + public string FileName { get; set; } + /// <summary> /// Limits searches to a specific user. /// </summary> @@ -161,6 +169,11 @@ public override IReadOnlyList<string> MergedQualifiers() parameters.Add(String.Format(CultureInfo.InvariantCulture, "extension:{0}", Extension)); } + if (FileName.IsNotBlank()) + { + parameters.Add(String.Format(CultureInfo.InvariantCulture, "filename:{0}", FileName)); + } + if (User.IsNotBlank()) { parameters.Add(String.Format(CultureInfo.InvariantCulture, "user:{0}", User)); From 9634dd510c4ee93d4a36a8a26cc31f8ff427e84d Mon Sep 17 00:00:00 2001 From: Jeff Foster <jeff.foster@acm.org> Date: Mon, 10 Aug 2015 14:54:47 +0100 Subject: [PATCH 2/2] A simple integration test --- .../Clients/SearchClientTests.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Octokit.Tests.Integration/Clients/SearchClientTests.cs b/Octokit.Tests.Integration/Clients/SearchClientTests.cs index ba6f4d89fd..c4f6042da8 100644 --- a/Octokit.Tests.Integration/Clients/SearchClientTests.cs +++ b/Octokit.Tests.Integration/Clients/SearchClientTests.cs @@ -43,6 +43,19 @@ public async Task SearchForFunctionInCode() Assert.NotEmpty(repos.Items); } + [Fact] + public async Task SearchForFileNameInCode() + { + var request = new SearchCodeRequest("swag") + { + FileName = "readme.md" + }; + + var repos = await _gitHubClient.Search.SearchCode(request); + + Assert.NotEmpty(repos.Items); + } + [Fact] public async Task SearchForWordInCode() {