Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions src/main/java/org/gitlab4j/api/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,29 @@ public String toString() {
}
}

/** Enum to use for ordering the results of getContibutors(). */
public enum ContributorOrderBy {

NAME, EMAIL, COMMITS;

private static JacksonJsonEnumHelper<ContributorOrderBy> 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 {

Expand Down
28 changes: 28 additions & 0 deletions src/main/java/org/gitlab4j/api/RepositoryApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,34 @@ public List<Contributor> getContributors(Object projectIdOrPath, int page, int p
return (response.readEntity(new GenericType<List<Contributor>>() { }));
}

/**
* Get a list of contributors from a project and in the specified page range, sorted by specified param.
*
* <pre><code>GitLab Endpoint: GET /projects/:id/repository/contributors</code></pre>
*
* @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<Contributor> 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<List<Contributor>>() { }));
}

/**
* Get a Pager of contributors from a project.
*
Expand Down