Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/EventService.java')
-rw-r--r--org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/EventService.java505
1 files changed, 505 insertions, 0 deletions
diff --git a/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/EventService.java b/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/EventService.java
new file mode 100644
index 00000000..a464268e
--- /dev/null
+++ b/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/EventService.java
@@ -0,0 +1,505 @@
+/*******************************************************************************
+ * Copyright (c) 2011 GitHub Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Jason Tsay (GitHub Inc.) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.egit.github.core.service;
+
+import static org.eclipse.egit.github.core.client.IGitHubConstants.SEGMENT_EVENTS;
+import static org.eclipse.egit.github.core.client.IGitHubConstants.SEGMENT_NETWORKS;
+import static org.eclipse.egit.github.core.client.IGitHubConstants.SEGMENT_ORGS;
+import static org.eclipse.egit.github.core.client.IGitHubConstants.SEGMENT_PUBLIC;
+import static org.eclipse.egit.github.core.client.IGitHubConstants.SEGMENT_RECEIVED_EVENTS;
+import static org.eclipse.egit.github.core.client.IGitHubConstants.SEGMENT_REPOS;
+import static org.eclipse.egit.github.core.client.IGitHubConstants.SEGMENT_USERS;
+
+import java.util.List;
+
+import org.eclipse.egit.github.core.IRepositoryIdProvider;
+import org.eclipse.egit.github.core.client.GitHubClient;
+import org.eclipse.egit.github.core.client.PageIterator;
+import org.eclipse.egit.github.core.client.PagedRequest;
+import org.eclipse.egit.github.core.event.Event;
+
+import com.google.gson.reflect.TypeToken;
+
+/**
+ * Service class for interacting with Events
+ *
+ * @see <a href="http://developer.github.com/v3/events">GitHub Event API
+ * documentation</a>
+ * @see <a href="http://developer.github.com/v3/events/types">GitHub Event
+ * types API documentation</a>
+ */
+public class EventService extends GitHubService {
+
+ /**
+ * Create event service
+ */
+ public EventService() {
+ super();
+ }
+
+ /**
+ * Create event service
+ *
+ * @param client
+ */
+ public EventService(GitHubClient client) {
+ super(client);
+ }
+
+ /**
+ * Create page iterator for all public events
+ *
+ * @return events page iterator
+ */
+ public PageIterator<Event> pagePublicEvents() {
+ return pagePublicEvents(PagedRequest.PAGE_SIZE);
+ }
+
+ /**
+ * Create page iterator for all public events
+ *
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pagePublicEvents(final int size) {
+ return pagePublicEvents(PagedRequest.PAGE_FIRST, size);
+ }
+
+ /**
+ * Create page iterator for all public events
+ *
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pagePublicEvents(final int start, final int size) {
+ PagedRequest<Event> request = createPagedRequest(start, size);
+ request.setUri(SEGMENT_EVENTS);
+ request.setType(new TypeToken<List<Event>>() {
+ }.getType());
+ return createPageIterator(request);
+ }
+
+ /**
+ * Create page iterator for a given repo's events
+ *
+ * @param repository
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageEvents(IRepositoryIdProvider repository) {
+ return pageEvents(repository, PagedRequest.PAGE_SIZE);
+ }
+
+ /**
+ * Create page iterator for a given repo's events
+ *
+ * @param repository
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageEvents(IRepositoryIdProvider repository,
+ final int size) {
+ return pageEvents(repository, PagedRequest.PAGE_FIRST, size);
+ }
+
+ /**
+ * Create page iterator for a given repo's events
+ *
+ * @param repository
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageEvents(IRepositoryIdProvider repository,
+ final int start, final int size) {
+ PagedRequest<Event> request = createRepoEventRequest(repository, start, size);
+ return createPageIterator(request);
+ }
+
+ /**
+ * Create page iterator for a given repo network's events
+ *
+ * @param repository
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageNetworkEvents(IRepositoryIdProvider repository) {
+ return pageNetworkEvents(repository, PagedRequest.PAGE_SIZE);
+ }
+
+ /**
+ * Create page iterator for a given repo network's events
+ *
+ * @param repository
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageNetworkEvents(IRepositoryIdProvider repository,
+ final int size) {
+ return pageNetworkEvents(repository, PagedRequest.PAGE_FIRST, size);
+ }
+
+ /**
+ * Create page iterator for a given repo network's events
+ *
+ * @param repository
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageNetworkEvents(IRepositoryIdProvider repository,
+ final int start, final int size) {
+ PagedRequest<Event> request = createNetworkRepoEventRequest(repository,
+ start, size);
+ return createPageIterator(request);
+ }
+
+ /**
+ * Create page iterator for a given org's events
+ *
+ * @param org
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageOrgEvents(String org) {
+ return pageOrgEvents(org, PagedRequest.PAGE_SIZE);
+ }
+
+ /**
+ * Create page iterator for a given org's events
+ *
+ * @param org
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageOrgEvents(String org, final int size) {
+ return pageOrgEvents(org, PagedRequest.PAGE_FIRST, size);
+ }
+
+ /**
+ * Create page iterator for a given org's events
+ *
+ * @param org
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageOrgEvents(String org, final int start,
+ final int size) {
+ PagedRequest<Event> request = createOrgEventRequest(org, start, size);
+ return createPageIterator(request);
+ }
+
+ /**
+ * Create page iterator for a given user's received events
+ * Returns private events if authenticated as the user
+ *
+ * @param user
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserReceivedEvents(String user) {
+ return pageUserReceivedEvents(user, false);
+ }
+
+ /**
+ * Create page iterator for a given user's received events
+ *
+ * @param user
+ * @param isPublic
+ * only include public events?
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserReceivedEvents(String user, boolean isPublic) {
+ return pageUserReceivedEvents(user, isPublic, PagedRequest.PAGE_SIZE);
+ }
+
+
+ /**
+ * Create page iterator for a given user's received events
+ *
+ * @param user
+ * @param isPublic
+ * only include public events?
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserReceivedEvents(String user,
+ boolean isPublic, final int size) {
+ return pageUserReceivedEvents(user, isPublic, PagedRequest.PAGE_FIRST, size);
+ }
+
+ /**
+ * Create page iterator for a given user's received events
+ *
+ * @param user
+ * @param isPublic
+ * only include public events?
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserReceivedEvents(String user, boolean isPublic,
+ final int start, final int size) {
+ PagedRequest<Event> request = createUserReceivedEventRequest(user,
+ isPublic, start, size);
+ return createPageIterator(request);
+ }
+
+ /**
+ * Create page iterator for a given user's events
+ * Returns private events if authenticated as the user
+ *
+ * @param user
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserEvents(String user) {
+ return pageUserEvents(user, false);
+ }
+
+ /**
+ * Create page iterator for a given user's events
+ *
+ * @param user
+ * @param isPublic
+ * only include public events?
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserEvents(String user, boolean isPublic) {
+ return pageUserEvents(user, isPublic, PagedRequest.PAGE_SIZE);
+ }
+
+
+ /**
+ * Create page iterator for a given user's events
+ *
+ * @param user
+ * @param isPublic
+ * only include public events?
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserEvents(String user,
+ boolean isPublic, final int size) {
+ return pageUserEvents(user, isPublic, PagedRequest.PAGE_FIRST, size);
+ }
+
+ /**
+ * Create page iterator for a given user's events
+ *
+ * @param user
+ * @param isPublic
+ * only include public events?
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserEvents(String user, boolean isPublic,
+ final int start, final int size) {
+ PagedRequest<Event> request = createUserEventRequest(user,
+ isPublic, start, size);
+ return createPageIterator(request);
+ }
+
+ /**
+ * Create page iterator for a given user's orgs events
+ *
+ * @param user
+ * @param org
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserOrgEvents(String user, String org) {
+ return pageUserOrgEvents(user, org, PagedRequest.PAGE_SIZE);
+ }
+
+ /**
+ * Create page iterator for a given user's orgs events
+ *
+ * @param user
+ * @param org
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserOrgEvents(String user, String org, final int size) {
+ return pageUserOrgEvents(user, org, PagedRequest.PAGE_FIRST, size);
+ }
+
+ /**
+ * Create page iterator for a given user's orgs events
+ *
+ * @param user
+ * @param org
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ public PageIterator<Event> pageUserOrgEvents(String user, String org,
+ final int start, final int size) {
+ PagedRequest<Event> request = createUserOrgEventRequest(user, org, start, size);
+ return createPageIterator(request);
+ }
+
+ /**
+ * Create repo event page request
+ *
+ * @param repository
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ protected PagedRequest<Event> createRepoEventRequest(IRepositoryIdProvider
+ repository, int start, int size) {
+ final String repoId = getId(repository);
+ StringBuilder uri = new StringBuilder(SEGMENT_REPOS);
+ uri.append('/').append(repoId);
+ uri.append(SEGMENT_EVENTS);
+ PagedRequest<Event> request = createPagedRequest(start, size);
+ request.setUri(uri).setType(new TypeToken<List<Event>>() {
+ }.getType());
+ return request;
+ }
+
+ /**
+ * Create network repo event page request
+ *
+ * @param repository
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ protected PagedRequest<Event> createNetworkRepoEventRequest(IRepositoryIdProvider
+ repository, int start, int size) {
+ final String repoId = getId(repository);
+ StringBuilder uri = new StringBuilder(SEGMENT_NETWORKS);
+ uri.append('/').append(repoId);
+ uri.append(SEGMENT_EVENTS);
+ PagedRequest<Event> request = createPagedRequest(start, size);
+ request.setUri(uri).setType(new TypeToken<List<Event>>() {
+ }.getType());
+ return request;
+ }
+
+ /**
+ * Create org event page request
+ *
+ * @param org
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ protected PagedRequest<Event> createOrgEventRequest(String org, int start,
+ int size) {
+ StringBuilder uri = new StringBuilder(SEGMENT_ORGS);
+ uri.append('/').append(org);
+ uri.append(SEGMENT_EVENTS);
+ PagedRequest<Event> request = createPagedRequest(start, size);
+ request.setUri(uri).setType(new TypeToken<List<Event>>() {
+ }.getType());
+ return request;
+ }
+
+ /**
+ * Create user received event page request
+ *
+ * @param user
+ * @param isPublic
+ * only include public events?
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ protected PagedRequest<Event> createUserReceivedEventRequest(String user,
+ boolean isPublic, int start, int size) {
+ StringBuilder uri = new StringBuilder(SEGMENT_USERS);
+ uri.append('/').append(user);
+ uri.append(SEGMENT_RECEIVED_EVENTS);
+ if (isPublic)
+ uri.append(SEGMENT_PUBLIC);
+ PagedRequest<Event> request = createPagedRequest(start, size);
+ request.setUri(uri).setType(new TypeToken<List<Event>>() {
+ }.getType());
+ return request;
+ }
+
+ /**
+ * Create user event page request
+ *
+ * @param user
+ * @param isPublic
+ * only include public events?
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ protected PagedRequest<Event> createUserEventRequest(String user, boolean isPublic,
+ int start, int size) {
+ StringBuilder uri = new StringBuilder(SEGMENT_USERS);
+ uri.append('/').append(user);
+ uri.append(SEGMENT_EVENTS);
+ if (isPublic)
+ uri.append(SEGMENT_PUBLIC);
+ PagedRequest<Event> request = createPagedRequest(start, size);
+ request.setUri(uri).setType(new TypeToken<List<Event>>() {
+ }.getType());
+ return request;
+ }
+
+ /**
+ * Create user's organization event page request
+ *
+ * @param user
+ * @param org
+ * @param start
+ * starting page number
+ * @param size
+ * size of page
+ * @return events page iterator
+ */
+ protected PagedRequest<Event> createUserOrgEventRequest(String user, String org,
+ int start, int size) {
+ StringBuilder uri = new StringBuilder(SEGMENT_USERS);
+ uri.append('/').append(user);
+ uri.append(SEGMENT_EVENTS).append(SEGMENT_ORGS);
+ uri.append('/').append(org);
+ PagedRequest<Event> request = createPagedRequest(start, size);
+ request.setUri(uri).setType(new TypeToken<List<Event>>() {
+ }.getType());
+ return request;
+ }
+}

Back to the top