Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 240bcab

Browse filesBrowse files
committed
Merge pull request hub4j#351
2 parents 2f8c399 + cda27d5 commit 240bcab
Copy full SHA for 240bcab

File tree

Expand file treeCollapse file tree

4 files changed

+155
-0
lines changed
Filter options
Expand file treeCollapse file tree

4 files changed

+155
-0
lines changed
+137Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
package org.kohsuke.github;
2+
3+
import java.io.IOException;
4+
5+
import org.apache.commons.lang.StringUtils;
6+
7+
/**
8+
* Search commits.
9+
*
10+
* @author Marc de Verdelhan
11+
* @see GitHub#searchCommits()
12+
*/
13+
@Preview @Deprecated
14+
public class GHCommitSearchBuilder extends GHSearchBuilder<GHCommit> {
15+
/*package*/ GHCommitSearchBuilder(GitHub root) {
16+
super(root,CommitSearchResult.class);
17+
req.withPreview(Previews.CLOAK);
18+
}
19+
20+
/**
21+
* Search terms.
22+
*/
23+
public GHCommitSearchBuilder q(String term) {
24+
super.q(term);
25+
return this;
26+
}
27+
28+
public GHCommitSearchBuilder author(String v) {
29+
return q("author:"+v);
30+
}
31+
32+
public GHCommitSearchBuilder committer(String v) {
33+
return q("committer:"+v);
34+
}
35+
36+
public GHCommitSearchBuilder authorName(String v) {
37+
return q("author-name:"+v);
38+
}
39+
40+
public GHCommitSearchBuilder committerName(String v) {
41+
return q("committer-name:"+v);
42+
}
43+
44+
public GHCommitSearchBuilder authorEmail(String v) {
45+
return q("author-email:"+v);
46+
}
47+
48+
public GHCommitSearchBuilder committerEmail(String v) {
49+
return q("committer-email:"+v);
50+
}
51+
52+
public GHCommitSearchBuilder authorDate(String v) {
53+
return q("author-date:"+v);
54+
}
55+
56+
public GHCommitSearchBuilder committerDate(String v) {
57+
return q("committer-date:"+v);
58+
}
59+
60+
public GHCommitSearchBuilder merge(boolean merge) {
61+
return q("merge:"+Boolean.valueOf(merge).toString().toLowerCase());
62+
}
63+
64+
public GHCommitSearchBuilder hash(String v) {
65+
return q("hash:"+v);
66+
}
67+
68+
public GHCommitSearchBuilder parent(String v) {
69+
return q("parent:"+v);
70+
}
71+
72+
public GHCommitSearchBuilder tree(String v) {
73+
return q("tree:"+v);
74+
}
75+
76+
public GHCommitSearchBuilder is(String v) {
77+
return q("is:"+v);
78+
}
79+
80+
public GHCommitSearchBuilder user(String v) {
81+
return q("user:"+v);
82+
}
83+
84+
public GHCommitSearchBuilder org(String v) {
85+
return q("org:"+v);
86+
}
87+
88+
public GHCommitSearchBuilder repo(String v) {
89+
return q("repo:"+v);
90+
}
91+
92+
public GHCommitSearchBuilder order(GHDirection v) {
93+
req.with("order",v);
94+
return this;
95+
}
96+
97+
public GHCommitSearchBuilder sort(Sort sort) {
98+
req.with("sort",sort);
99+
return this;
100+
}
101+
102+
public enum Sort { AUTHOR_DATE, COMMITTER_DATE }
103+
104+
private static class CommitSearchResult extends SearchResult<GHCommit> {
105+
private GHCommit[] items;
106+
107+
@Override
108+
/*package*/ GHCommit[] getItems(GitHub root) {
109+
for (GHCommit commit : items) {
110+
String repoName = getRepoName(commit.url);
111+
try {
112+
GHRepository repo = root.getRepository(repoName);
113+
commit.wrapUp(repo);
114+
} catch (IOException ioe) {}
115+
}
116+
return items;
117+
}
118+
}
119+
120+
/**
121+
* @param commitUrl a commit URL
122+
* @return the repo name ("username/reponame")
123+
*/
124+
private static String getRepoName(String commitUrl) {
125+
if (StringUtils.isBlank(commitUrl)) {
126+
return null;
127+
}
128+
int indexOfUsername = (GitHub.GITHUB_URL + "/repos/").length();
129+
String[] tokens = commitUrl.substring(indexOfUsername).split("/", 3);
130+
return tokens[0] + '/' + tokens[1];
131+
}
132+
133+
@Override
134+
protected String getApiUrl() {
135+
return "/search/commits";
136+
}
137+
}

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

Copy file name to clipboardExpand all lines: src/main/java/org/kohsuke/github/GitHub.java
+8Lines 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

Copy file name to clipboardExpand all lines: src/main/java/org/kohsuke/github/Previews.java
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77
static final String LOKI = "application/vnd.github.loki-preview+json";
88
static final String DRAX = "application/vnd.github.drax-preview+json";
99
static final String SQUIRREL_GIRL = "application/vnd.github.squirrel-girl-preview";
10+
static final String CLOAK = "application/vnd.github.cloak-preview";
1011
}

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

Copy file name to clipboardExpand all lines: src/test/java/org/kohsuke/github/AppTest.java
+9Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,15 @@ 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+
GHCommit firstCommit = r.iterator().next();
694+
assertTrue(firstCommit.getFiles().size() > 0);
695+
}
696+
688697
@Test
689698
public void testIssueSearch() throws IOException {
690699
PagedSearchIterable<GHIssue> r = gitHub.searchIssues().mentions("kohsuke").isOpen().list();

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.