Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Sawicki2011-10-11 17:17:35 +0000
committerKevin Sawicki2011-10-11 17:17:35 +0000
commit2d41f419602586007a2419dcbbf642ec6cd81430 (patch)
tree5f1246efcb87c7b8357987174d6159b9574193cf
parent12aa135bb6b2a63b26a5b5c0177c9768e279443f (diff)
downloadegit-github-2d41f419602586007a2419dcbbf642ec6cd81430.tar.gz
egit-github-2d41f419602586007a2419dcbbf642ec6cd81430.tar.xz
egit-github-2d41f419602586007a2419dcbbf642ec6cd81430.zip
Add service support for filtering repositories.
This currently supports filtering repository requests by type such as public, private, and member. Change-Id: I6cfdd65dedcd93b6130021dedacaf524206c6d48 Signed-off-by: Kevin Sawicki <kevin@github.com>
-rw-r--r--org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/RepositoryServiceTest.java30
-rw-r--r--org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/RepositoryService.java135
2 files changed, 162 insertions, 3 deletions
diff --git a/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/RepositoryServiceTest.java b/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/RepositoryServiceTest.java
index e2b47060..f3d2580c 100644
--- a/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/RepositoryServiceTest.java
+++ b/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/RepositoryServiceTest.java
@@ -241,7 +241,7 @@ public class RepositoryServiceTest {
*/
@Test(expected = IllegalArgumentException.class)
public void getRepositoriesNullUser() throws IOException {
- service.getRepositories(null);
+ service.getRepositories((String) null);
}
/**
@@ -385,4 +385,32 @@ public class RepositoryServiceTest {
request.setUri(Utils.page("/repos/o/n/tags"));
verify(client).get(request);
}
+
+ /**
+ * Get public repositories for current user
+ *
+ * @throws IOException
+ */
+ @Test
+ public void getPublicRepositories() throws IOException {
+ service.getRepositories(Collections.singletonMap(
+ RepositoryService.FILTER_TYPE, RepositoryService.TYPE_PUBLIC));
+ GitHubRequest request = new GitHubRequest();
+ request.setUri(Utils.page("/user/repos?type=public"));
+ verify(client).get(request);
+ }
+
+ /**
+ * Get public repositories for current user
+ *
+ * @throws IOException
+ */
+ @Test
+ public void getPrivateOrgRepositories() throws IOException {
+ service.getOrgRepositories("org1", Collections.singletonMap(
+ RepositoryService.FILTER_TYPE, RepositoryService.TYPE_PRIVATE));
+ GitHubRequest request = new GitHubRequest();
+ request.setUri(Utils.page("/orgs/org1/repos?type=private"));
+ verify(client).get(request);
+ }
}
diff --git a/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/RepositoryService.java b/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/RepositoryService.java
index bad5a05f..4200b2cc 100644
--- a/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/RepositoryService.java
+++ b/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/RepositoryService.java
@@ -73,6 +73,31 @@ public class RepositoryService extends GitHubService {
*/
public static final String FIELD_PUBLIC = "public"; //$NON-NLS-1$
+ /**
+ * Type filter key
+ */
+ public static final String FILTER_TYPE = "type"; //$NON-NLS-1$
+
+ /**
+ * Public repository filter type
+ */
+ public static final String TYPE_PUBLIC = "public"; //$NON-NLS-1$
+
+ /**
+ * Private repository filter type
+ */
+ public static final String TYPE_PRIVATE = "private"; //$NON-NLS-1$
+
+ /**
+ * Member repository filter type
+ */
+ public static final String TYPE_MEMBER = "member"; //$NON-NLS-1$
+
+ /**
+ * All repositories filter type
+ */
+ public static final String TYPE_ALL = "all"; //$NON-NLS-1$
+
private static class RepositoryContainer implements
IResourceProvider<SearchRepository> {
@@ -110,7 +135,19 @@ public class RepositoryService extends GitHubService {
* @throws IOException
*/
public List<Repository> getRepositories() throws IOException {
- return getAll(pageRepositories());
+ return getRepositories((Map<String, String>) null);
+ }
+
+ /**
+ * Get repositories for the currently authenticated user
+ *
+ * @param filterData
+ * @return list of repositories
+ * @throws IOException
+ */
+ public List<Repository> getRepositories(Map<String, String> filterData)
+ throws IOException {
+ return getAll(pageRepositories(filterData));
}
/**
@@ -145,8 +182,49 @@ public class RepositoryService extends GitHubService {
*/
public PageIterator<Repository> pageRepositories(int start, int size)
throws IOException {
+ return pageRepositories((Map<String, String>) null, start, size);
+ }
+
+ /**
+ * Page repositories for currently authenticated user
+ *
+ * @param filterData
+ * @return iterator over pages of repositories
+ * @throws IOException
+ */
+ public PageIterator<Repository> pageRepositories(
+ Map<String, String> filterData) throws IOException {
+ return pageRepositories(filterData, PAGE_SIZE);
+ }
+
+ /**
+ * Page repositories for currently authenticated user
+ *
+ * @param filterData
+ * @param size
+ * @return iterator over pages of repositories
+ * @throws IOException
+ */
+ public PageIterator<Repository> pageRepositories(
+ Map<String, String> filterData, int size) throws IOException {
+ return pageRepositories(filterData, PAGE_FIRST, size);
+ }
+
+ /**
+ * Page repositories for currently authenticated user
+ *
+ * @param filterData
+ * @param start
+ * @param size
+ * @return iterator over pages of repositories
+ * @throws IOException
+ */
+ public PageIterator<Repository> pageRepositories(
+ Map<String, String> filterData, int start, int size)
+ throws IOException {
PagedRequest<Repository> request = createPagedRequest(start, size);
request.setUri(SEGMENT_USER + SEGMENT_REPOS);
+ request.setParams(filterData);
request.setType(new TypeToken<List<Repository>>() {
}.getType());
return createPageIterator(request);
@@ -223,7 +301,7 @@ public class RepositoryService extends GitHubService {
*/
public List<Repository> getOrgRepositories(String organization)
throws IOException {
- return getAll(pageOrgRepositories(organization));
+ return getOrgRepositories(organization, null);
}
/**
@@ -258,6 +336,58 @@ public class RepositoryService extends GitHubService {
*/
public PageIterator<Repository> pageOrgRepositories(String organization,
int start, int size) {
+ return pageOrgRepositories(organization, null, start, size);
+ }
+
+ /**
+ * Get organization repositories for the given organization
+ *
+ * @param organization
+ * @param filterData
+ * @return list of repositories
+ * @throws IOException
+ */
+ public List<Repository> getOrgRepositories(String organization,
+ Map<String, String> filterData) throws IOException {
+ return getAll(pageOrgRepositories(organization, filterData));
+ }
+
+ /**
+ * Page repositories for the given organization
+ *
+ * @param organization
+ * @param filterData
+ * @return iterator over pages of repositories
+ */
+ public PageIterator<Repository> pageOrgRepositories(String organization,
+ Map<String, String> filterData) {
+ return pageOrgRepositories(organization, filterData, PAGE_SIZE);
+ }
+
+ /**
+ * Page repositories for the given organization
+ *
+ * @param organization
+ * @param filterData
+ * @param size
+ * @return iterator over pages of repositories
+ */
+ public PageIterator<Repository> pageOrgRepositories(String organization,
+ Map<String, String> filterData, int size) {
+ return pageOrgRepositories(organization, filterData, PAGE_FIRST, size);
+ }
+
+ /**
+ * Page repositories for the given organization
+ *
+ * @param organization
+ * @param filterData
+ * @param start
+ * @param size
+ * @return iterator over pages of repositories
+ */
+ public PageIterator<Repository> pageOrgRepositories(String organization,
+ Map<String, String> filterData, int start, int size) {
if (organization == null)
throw new IllegalArgumentException("Organization cannot be null"); //$NON-NLS-1$
if (organization.length() == 0)
@@ -267,6 +397,7 @@ public class RepositoryService extends GitHubService {
uri.append('/').append(organization);
uri.append(SEGMENT_REPOS);
PagedRequest<Repository> request = createPagedRequest(start, size);
+ request.setParams(filterData);
request.setUri(uri);
request.setType(new TypeToken<List<Repository>>() {
}.getType());

Back to the top