diff --git a/src/main/java/org/gitlab4j/api/Constants.java b/src/main/java/org/gitlab4j/api/Constants.java index bb786c54bbca72046f6da92dc06acf137e1ff2eb..f96945c5780dd0b83ce11112d23f99db39caf18b 100644 --- a/src/main/java/org/gitlab4j/api/Constants.java +++ b/src/main/java/org/gitlab4j/api/Constants.java @@ -311,6 +311,29 @@ public interface Constants { } } + /** Enum to use for ordering the results of getContibutors(). */ + public enum ContributorOrderBy { + + NAME, EMAIL, COMMITS; + + private static JacksonJsonEnumHelper enumHelper = new JacksonJsonEnumHelper<>(ContributorOrderBy.class); + + @JsonCreator + public static ContributorOrderBy forValue(String value) { + return enumHelper.forValue(value); + } + + @JsonValue + public String toValue() { + return (enumHelper.toString(this)); + } + + @Override + public String toString() { + return (enumHelper.toString(this)); + } + } + /** Enum to use for specifying the scope when calling getPipelines(). */ public enum PipelineScope { diff --git a/src/main/java/org/gitlab4j/api/RepositoryApi.java b/src/main/java/org/gitlab4j/api/RepositoryApi.java index 620781ec8fb52a8c23d6c367c542d9289f729e15..e2aa3d3ed771a37618f5f1a6ff0e675c019804e5 100644 --- a/src/main/java/org/gitlab4j/api/RepositoryApi.java +++ b/src/main/java/org/gitlab4j/api/RepositoryApi.java @@ -663,6 +663,34 @@ public class RepositoryApi extends AbstractApi { return (response.readEntity(new GenericType>() { })); } + /** + * Get a list of contributors from a project and in the specified page range, sorted by specified param. + * + *
GitLab Endpoint: GET /projects/:id/repository/contributors
+ * + * @param projectIdOrPath the project in the form of an Long(ID), String(path), or Project instance + * @param page the page to get + * @param perPage the number of projects per page + * @param orderBy (optional param) returns contributors ordered by NAME, EMAIL, or COMMITS. Default is COMMITS + * @param sortOrder (optional param) returns contributors sorted in ASC or DESC order. Default is ASC + * @return a List containing the contributors for the specified project ID + * @throws GitLabApiException if any exception occurs + */ + public List getContributors(Object projectIdOrPath, int page, int perPage, ContributorOrderBy orderBy, SortOrder sortOrder) throws GitLabApiException { + GitLabApiForm formData = new GitLabApiForm().withParam(PAGE_PARAM, page).withParam(PER_PAGE_PARAM, perPage); + if (sortOrder != null) { + formData.withParam("sort", sortOrder, false); + } + + if (orderBy != null) { + formData.withParam("order_by", orderBy, false); + } + + Response response = get(Response.Status.OK, formData.asMap(), + "projects", getProjectIdOrPath(projectIdOrPath), "repository", "contributors"); + return (response.readEntity(new GenericType>() { })); + } + /** * Get a Pager of contributors from a project. *