Skip to content

Commit b554c1a

Browse files
committed
Support to filter pull requests by head & base branches. Close #7
1 parent ba4323e commit b554c1a

1 file changed

Lines changed: 30 additions & 48 deletions

File tree

src/main/java/com/jdroid/github/service/PullRequestService.java

Lines changed: 30 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,27 @@ public PullRequest getPullRequest(IRepositoryIdProvider repository, int id)
111111
request.setType(PullRequest.class);
112112
return (PullRequest) client.get(request).getBody();
113113
}
114+
115+
/**
116+
* Create request for single pull request
117+
*
118+
* @param repository
119+
* @param state
120+
* @param head
121+
* @param base
122+
* @return request
123+
*/
124+
public PullRequest getPullRequest(IRepositoryIdProvider repository, String state, String head, String base)
125+
throws IOException {
126+
PullRequest pullRequest = null;
127+
List<PullRequest> pullRequests = getAll(pagePullRequests(repository, state, head, base));
128+
if (pullRequests.size() > 1) {
129+
throw new RuntimeException("Expected just one pull request");
130+
} else if (!pullRequests.isEmpty()) {
131+
pullRequest = pullRequests.get(0);
132+
}
133+
return pullRequest;
134+
}
114135

115136
/**
116137
* Create paged request for fetching pull requests
@@ -136,7 +157,7 @@ protected PagedRequest<PullRequest> createPagedRequest(IRepositoryIdProvider pro
136157
if (head != null) {
137158
params.put(PR_HEAD, head);
138159
}
139-
if (head != null) {
160+
if (base != null) {
140161
params.put(PR_BASE, base);
141162
}
142163
if (!params.isEmpty()) {
@@ -157,7 +178,7 @@ protected PagedRequest<PullRequest> createPagedRequest(IRepositoryIdProvider pro
157178
*/
158179
public List<PullRequest> getPullRequests(IRepositoryIdProvider repository,
159180
String state) throws IOException {
160-
return getAll(pagePullRequests(repository, state));
181+
return getAll(pagePullRequests(repository, state, null, null));
161182
}
162183

163184
/**
@@ -168,8 +189,8 @@ public List<PullRequest> getPullRequests(IRepositoryIdProvider repository,
168189
* @return iterator over pages of pull requests
169190
*/
170191
public PageIterator<PullRequest> pagePullRequests(
171-
IRepositoryIdProvider repository, String state) {
172-
return pagePullRequests(repository, state, PAGE_SIZE);
192+
IRepositoryIdProvider repository, String state, String head, String base) {
193+
return pagePullRequests(repository, state, head, base, PAGE_SIZE);
173194
}
174195

175196
/**
@@ -181,8 +202,8 @@ public PageIterator<PullRequest> pagePullRequests(
181202
* @return iterator over pages of pull requests
182203
*/
183204
public PageIterator<PullRequest> pagePullRequests(
184-
IRepositoryIdProvider repository, String state, int size) {
185-
return pagePullRequests(repository, state, PAGE_FIRST, size);
205+
IRepositoryIdProvider repository, String state, String head, String base, int size) {
206+
return pagePullRequests(repository, state, head, base, PAGE_FIRST, size);
186207
}
187208

188209
/**
@@ -195,51 +216,12 @@ public PageIterator<PullRequest> pagePullRequests(
195216
* @return iterator over pages of pull requests
196217
*/
197218
public PageIterator<PullRequest> pagePullRequests(
198-
IRepositoryIdProvider repository, String state, int start, int size) {
199-
PagedRequest<PullRequest> request = createPullsRequest(repository,
200-
state, start, size);
219+
IRepositoryIdProvider repository, String state, String head, String base, int start, int size) {
220+
PagedRequest<PullRequest> request = createPagedRequest(repository,
221+
state, head, base, start, size);
201222
return createPageIterator(request);
202223
}
203224

204-
private Map<String, String> createPrMap(PullRequest request) {
205-
Map<String, String> params = new HashMap<String, String>();
206-
if (request != null) {
207-
String title = request.getTitle();
208-
if (title != null)
209-
params.put(PR_TITLE, title);
210-
String body = request.getBody();
211-
if (body != null)
212-
params.put(PR_BODY, body);
213-
PullRequestMarker baseMarker = request.getBase();
214-
if (baseMarker != null) {
215-
String base = baseMarker.getLabel();
216-
if (base != null)
217-
params.put(PR_BASE, base);
218-
}
219-
PullRequestMarker headMarker = request.getHead();
220-
if (headMarker != null) {
221-
String head = headMarker.getLabel();
222-
if (head != null)
223-
params.put(PR_HEAD, head);
224-
}
225-
}
226-
return params;
227-
}
228-
229-
private Map<String, String> editPrMap(PullRequest request) {
230-
Map<String, String> params = new HashMap<String, String>();
231-
String title = request.getTitle();
232-
if (title != null)
233-
params.put(PR_TITLE, title);
234-
String body = request.getBody();
235-
if (body != null)
236-
params.put(PR_BODY, body);
237-
String state = request.getState();
238-
if (state != null)
239-
params.put(PR_STATE, state);
240-
return params;
241-
}
242-
243225
/**
244226
* Create pull request
245227
*

0 commit comments

Comments
 (0)