Skip to content

Commit 64af13f

Browse files
committed
Add the Commit search API (still in preview)
1 parent e9b59c6 commit 64af13f

5 files changed

Lines changed: 131 additions & 1 deletion

File tree

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
package org.kohsuke.github;
2+
3+
import java.util.Locale;
4+
5+
/**
6+
* Search commits.
7+
*
8+
* @author Marc de Verdelhan
9+
* @see GitHub#searchCommits()
10+
*/
11+
@Preview @Deprecated
12+
public class GHCommitSearchBuilder extends GHSearchBuilder<GHCommit> {
13+
/*package*/ GHCommitSearchBuilder(GitHub root) {
14+
super(root,CommitSearchResult.class);
15+
req = req.withPreview(Previews.CLOAK);
16+
}
17+
18+
/**
19+
* Search terms.
20+
*/
21+
public GHCommitSearchBuilder q(String term) {
22+
super.q(term);
23+
return this;
24+
}
25+
26+
public GHCommitSearchBuilder author(String v) {
27+
return q("author:"+v);
28+
}
29+
30+
public GHCommitSearchBuilder committer(String v) {
31+
return q("committer:"+v);
32+
}
33+
34+
public GHCommitSearchBuilder authorName(String v) {
35+
return q("author-name:"+v);
36+
}
37+
38+
public GHCommitSearchBuilder committerName(String v) {
39+
return q("committer-name:"+v);
40+
}
41+
42+
public GHCommitSearchBuilder authorEmail(String v) {
43+
return q("author-email:"+v);
44+
}
45+
46+
public GHCommitSearchBuilder committerEmail(String v) {
47+
return q("committer-email:"+v);
48+
}
49+
50+
public GHCommitSearchBuilder authorDate(String v) {
51+
return q("author-date:"+v);
52+
}
53+
54+
public GHCommitSearchBuilder committerDate(String v) {
55+
return q("committer-date:"+v);
56+
}
57+
58+
public GHCommitSearchBuilder merge(boolean merge) {
59+
return q("merge:"+Boolean.valueOf(merge).toString().toLowerCase());
60+
}
61+
62+
public GHCommitSearchBuilder hash(String v) {
63+
return q("hash:"+v);
64+
}
65+
66+
public GHCommitSearchBuilder parent(String v) {
67+
return q("parent:"+v);
68+
}
69+
70+
public GHCommitSearchBuilder tree(String v) {
71+
return q("tree:"+v);
72+
}
73+
74+
public GHCommitSearchBuilder is(String v) {
75+
return q("is:"+v);
76+
}
77+
78+
public GHCommitSearchBuilder user(String v) {
79+
return q("user:"+v);
80+
}
81+
82+
public GHCommitSearchBuilder org(String v) {
83+
return q("org:"+v);
84+
}
85+
86+
public GHCommitSearchBuilder repo(String v) {
87+
return q("repo:"+v);
88+
}
89+
90+
public GHCommitSearchBuilder order(GHDirection v) {
91+
req.with("order",v);
92+
return this;
93+
}
94+
95+
public GHCommitSearchBuilder sort(Sort sort) {
96+
req.with("sort",sort);
97+
return this;
98+
}
99+
100+
public enum Sort { AUTHOR_DATE, COMMITTER_DATE }
101+
102+
private static class CommitSearchResult extends SearchResult<GHCommit> {
103+
private GHCommit[] items;
104+
105+
@Override
106+
/*package*/ GHCommit[] getItems(GitHub root) {
107+
return items;
108+
}
109+
}
110+
111+
@Override
112+
protected String getApiUrl() {
113+
return "/search/commits";
114+
}
115+
}

src/main/java/org/kohsuke/github/GHQueryBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88
public abstract class GHQueryBuilder<T> {
99
protected final GitHub root;
10-
protected final Requester req;
10+
protected Requester req;
1111

1212
/*package*/ GHQueryBuilder(GitHub root) {
1313
this.root = root;

src/main/java/org/kohsuke/github/GitHub.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,14 @@ private boolean isPrivateModeEnabled() {
719719
}
720720
}
721721

722+
/**
723+
* Search commits.
724+
*/
725+
@Preview @Deprecated
726+
public GHCommitSearchBuilder searchCommits() {
727+
return new GHCommitSearchBuilder(this);
728+
}
729+
722730
/**
723731
* Search issues.
724732
*/

src/main/java/org/kohsuke/github/Previews.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@
88
static final String DRAX = "application/vnd.github.drax-preview+json";
99
static final String SQUIRREL_GIRL = "application/vnd.github.squirrel-girl-preview";
1010
static final String KORRA = "application/vnd.github.korra-preview";
11+
static final String CLOAK = "application/vnd.github.cloak-preview";
1112
}

src/test/java/org/kohsuke/github/AppTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,12 @@ public void testMemberPagenation() throws IOException {
685685
assertFalse(all.isEmpty());
686686
}
687687

688+
@Test
689+
public void testCommitSearch() throws IOException {
690+
PagedSearchIterable<GHCommit> r = gitHub.searchCommits().author("kohsuke").list();
691+
assertTrue(r.getTotalCount() > 0);
692+
}
693+
688694
@Test
689695
public void testIssueSearch() throws IOException {
690696
PagedSearchIterable<GHIssue> r = gitHub.searchIssues().mentions("kohsuke").isOpen().list();

0 commit comments

Comments
 (0)