Commit 0e2cd80d authored by Greg Messner's avatar Greg Messner
Browse files

Added Pager<T> support.

parent d5cebb3e
...@@ -11,7 +11,7 @@ To utilize the GitLab API for Java in your project, simply add the following dep ...@@ -11,7 +11,7 @@ To utilize the GitLab API for Java in your project, simply add the following dep
```java ```java
dependencies { dependencies {
... ...
compile group: 'org.gitlab4j', name: 'gitlab4j-api', version: '4.2.5' compile group: 'org.gitlab4j', name: 'gitlab4j-api', version: '4.3.0'
} }
``` ```
...@@ -20,11 +20,11 @@ dependencies { ...@@ -20,11 +20,11 @@ dependencies {
<dependency> <dependency>
<groupId>org.gitlab4j</groupId> <groupId>org.gitlab4j</groupId>
<artifactId>gitlab4j-api</artifactId> <artifactId>gitlab4j-api</artifactId>
<version>4.2.5</version> <version>4.3.0</version>
</dependency> </dependency>
``` ```
If you are not using Gradle or Maven you can download the latest gitlab4j-api JAR file here: [gitlab4j-api-4.2.5.jar](https://oss.sonatype.org/service/local/repositories/releases/content/org/gitlab4j/gitlab4j-api/4.2.5/gitlab4j-api-4.2.5.jar "Download JAR") If you are not using Gradle or Maven you can download the latest gitlab4j-api JAR file here: [gitlab4j-api-4.3.0.jar](https://oss.sonatype.org/service/local/repositories/releases/content/org/gitlab4j/gitlab4j-api/4.3.0/gitlab4j-api-4.3.0.jar "Download JAR")
Javadocs are available here: <a href="http://www.messners.com/gitlab4j-api/javadocs/index.html?org/gitlab4j/api/package-summary.html" target="_top">Javadocs</a> Javadocs are available here: <a href="http://www.messners.com/gitlab4j-api/javadocs/index.html?org/gitlab4j/api/package-summary.html" target="_top">Javadocs</a>
...@@ -45,6 +45,21 @@ As of GitLab4J-API 4.2.0 support has been added for GitLab API V4. If your appli ...@@ -45,6 +45,21 @@ As of GitLab4J-API 4.2.0 support has been added for GitLab API V4. If your appli
GitLabApi gitLabApi = new GitLabApi(ApiVersion.V3, "http://your.gitlab.server.com", "YOUR_PRIVATE_TOKEN"); GitLabApi gitLabApi = new GitLabApi(ApiVersion.V3, "http://your.gitlab.server.com", "YOUR_PRIVATE_TOKEN");
``` ```
GitLab4J-API provides an easy to use paging mechanism to page through lists of results from the GitLab API. Here is an example on how to use the Pager:
```java
// Get a Pager instance that will page through the projects with 10 projects per page
Pager<Project> projectPager = gitlabApi.getProjectsApi().getProjectsPager(10);
// Iterate through the pages and print out the name and description
while (projectsPager.hasNext())) {
List<Project> projects = projectsPager.next();
for (Project project : projects) {
System.out.println(project.getName() + " -: " + project.getDescription());
}
}
```
The API has been broken up into sub APIs classes to make it easier to learn and to separate concerns. Following is a list of the sub APIs along with a sample use of each API. See the Javadocs for a complete list of available methods for each sub API. The API has been broken up into sub APIs classes to make it easier to learn and to separate concerns. Following is a list of the sub APIs along with a sample use of each API. See the Javadocs for a complete list of available methods for each sub API.
Available Sub APIs Available Sub APIs
......
package org.gitlab4j.api; package org.gitlab4j.api;
import java.net.URL;
import java.net.URLEncoder;
import javax.ws.rs.NotAuthorizedException; import javax.ws.rs.NotAuthorizedException;
import javax.ws.rs.core.Form; import javax.ws.rs.core.Form;
import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.MultivaluedMap;
...@@ -7,14 +10,11 @@ import javax.ws.rs.core.Response; ...@@ -7,14 +10,11 @@ import javax.ws.rs.core.Response;
import org.gitlab4j.api.GitLabApi.ApiVersion; import org.gitlab4j.api.GitLabApi.ApiVersion;
import java.net.URL;
import java.net.URLEncoder;
/** /**
* This class is the base class for all the sub API classes. It provides implementations of * This class is the base class for all the sub API classes. It provides implementations of
* delete(), get(), post() and put() that are re-used by all the sub-classes. * delete(), get(), post() and put() that are re-used by all the sub-classes.
*/ */
public abstract class AbstractApi { public abstract class AbstractApi implements Constants {
private GitLabApi gitLabApi; private GitLabApi gitLabApi;
...@@ -49,7 +49,7 @@ public abstract class AbstractApi { ...@@ -49,7 +49,7 @@ public abstract class AbstractApi {
/** /**
* Perform an HTTP GET call with the specified query parameters and path objects, returning * Perform an HTTP GET call with the specified query parameters and path objects, returning
* a ClientResponse instance with the data returned from the endpoint. * a ClientResponse instance with the data returned from the endpoint.
* *
* @param expectedStatus the HTTP status that should be returned from the server * @param expectedStatus the HTTP status that should be returned from the server
* @param queryParams multivalue map of request parameters * @param queryParams multivalue map of request parameters
* @param pathArgs variable list of arguments used to build the URI * @param pathArgs variable list of arguments used to build the URI
...@@ -67,7 +67,7 @@ public abstract class AbstractApi { ...@@ -67,7 +67,7 @@ public abstract class AbstractApi {
/** /**
* Perform an HTTP GET call with the specified query parameters and URL, returning * Perform an HTTP GET call with the specified query parameters and URL, returning
* a ClientResponse instance with the data returned from the endpoint. * a ClientResponse instance with the data returned from the endpoint.
* *
* @param expectedStatus the HTTP status that should be returned from the server * @param expectedStatus the HTTP status that should be returned from the server
* @param queryParams multivalue map of request parameters * @param queryParams multivalue map of request parameters
* @param url the fully formed path to the GitLab API endpoint * @param url the fully formed path to the GitLab API endpoint
...@@ -85,7 +85,7 @@ public abstract class AbstractApi { ...@@ -85,7 +85,7 @@ public abstract class AbstractApi {
/** /**
* Perform an HTTP POST call with the specified form data and path objects, returning * Perform an HTTP POST call with the specified form data and path objects, returning
* a ClientResponse instance with the data returned from the endpoint. * a ClientResponse instance with the data returned from the endpoint.
* *
* @param expectedStatus the HTTP status that should be returned from the server * @param expectedStatus the HTTP status that should be returned from the server
* @param formData the Form containing the name/value pairs for the POST data * @param formData the Form containing the name/value pairs for the POST data
* @param pathArgs variable list of arguments used to build the URI * @param pathArgs variable list of arguments used to build the URI
...@@ -103,7 +103,7 @@ public abstract class AbstractApi { ...@@ -103,7 +103,7 @@ public abstract class AbstractApi {
/** /**
* Perform an HTTP POST call with the specified form data and path objects, returning * Perform an HTTP POST call with the specified form data and path objects, returning
* a ClientResponse instance with the data returned from the endpoint. * a ClientResponse instance with the data returned from the endpoint.
* *
* @param expectedStatus the HTTP status that should be returned from the server * @param expectedStatus the HTTP status that should be returned from the server
* @param queryParams multivalue map of request parameters * @param queryParams multivalue map of request parameters
* @param pathArgs variable list of arguments used to build the URI * @param pathArgs variable list of arguments used to build the URI
...@@ -121,7 +121,7 @@ public abstract class AbstractApi { ...@@ -121,7 +121,7 @@ public abstract class AbstractApi {
/** /**
* Perform an HTTP POST call with the specified form data and URL, returning * Perform an HTTP POST call with the specified form data and URL, returning
* a ClientResponse instance with the data returned from the endpoint. * a ClientResponse instance with the data returned from the endpoint.
* *
* @param expectedStatus the HTTP status that should be returned from the server * @param expectedStatus the HTTP status that should be returned from the server
* @param formData the Form containing the name/value pairs for the POST data * @param formData the Form containing the name/value pairs for the POST data
* @param url the fully formed path to the GitLab API endpoint * @param url the fully formed path to the GitLab API endpoint
...@@ -139,7 +139,7 @@ public abstract class AbstractApi { ...@@ -139,7 +139,7 @@ public abstract class AbstractApi {
/** /**
* Perform an HTTP PUT call with the specified form data and path objects, returning * Perform an HTTP PUT call with the specified form data and path objects, returning
* a ClientResponse instance with the data returned from the endpoint. * a ClientResponse instance with the data returned from the endpoint.
* *
* @param expectedStatus the HTTP status that should be returned from the server * @param expectedStatus the HTTP status that should be returned from the server
* @param queryParams multivalue map of request parameters * @param queryParams multivalue map of request parameters
* @param pathArgs variable list of arguments used to build the URI * @param pathArgs variable list of arguments used to build the URI
...@@ -157,7 +157,7 @@ public abstract class AbstractApi { ...@@ -157,7 +157,7 @@ public abstract class AbstractApi {
/** /**
* Perform an HTTP PUT call with the specified form data and URL, returning * Perform an HTTP PUT call with the specified form data and URL, returning
* a ClientResponse instance with the data returned from the endpoint. * a ClientResponse instance with the data returned from the endpoint.
* *
* @param expectedStatus the HTTP status that should be returned from the server * @param expectedStatus the HTTP status that should be returned from the server
* @param queryParams multivalue map of request parameters * @param queryParams multivalue map of request parameters
* @param url the fully formed path to the GitLab API endpoint * @param url the fully formed path to the GitLab API endpoint
...@@ -193,7 +193,7 @@ public abstract class AbstractApi { ...@@ -193,7 +193,7 @@ public abstract class AbstractApi {
/** /**
* Perform an HTTP DELETE call with the specified form data and URL, returning * Perform an HTTP DELETE call with the specified form data and URL, returning
* a ClientResponse instance with the data returned from the endpoint. * a ClientResponse instance with the data returned from the endpoint.
* *
* @param expectedStatus the HTTP status that should be returned from the server * @param expectedStatus the HTTP status that should be returned from the server
* @param queryParams multivalue map of request parameters * @param queryParams multivalue map of request parameters
* @param url the fully formed path to the GitLab API endpoint * @param url the fully formed path to the GitLab API endpoint
...@@ -210,7 +210,7 @@ public abstract class AbstractApi { ...@@ -210,7 +210,7 @@ public abstract class AbstractApi {
/** /**
* Convenience method for adding query and form parameters to a get() or post() call. * Convenience method for adding query and form parameters to a get() or post() call.
* *
* @param formData the Form containing the name/value pairs * @param formData the Form containing the name/value pairs
* @param name the name of the field/attribute to add * @param name the name of the field/attribute to add
* @param value the value of the field/attribute to add * @param value the value of the field/attribute to add
...@@ -222,7 +222,7 @@ public abstract class AbstractApi { ...@@ -222,7 +222,7 @@ public abstract class AbstractApi {
/** /**
* Convenience method for adding query and form parameters to a get() or post() call. * Convenience method for adding query and form parameters to a get() or post() call.
* If required is true and value is null, will throw an IllegalArgumentException. * If required is true and value is null, will throw an IllegalArgumentException.
* *
* @param formData the Form containing the name/value pairs * @param formData the Form containing the name/value pairs
* @param name the name of the field/attribute to add * @param name the name of the field/attribute to add
* @param value the value of the field/attribute to add * @param value the value of the field/attribute to add
...@@ -251,7 +251,7 @@ public abstract class AbstractApi { ...@@ -251,7 +251,7 @@ public abstract class AbstractApi {
/** /**
* Validates response the response from the server against the expected HTTP status and * Validates response the response from the server against the expected HTTP status and
* the returned secret token, if either is not correct will throw a GitLabApiException. * the returned secret token, if either is not correct will throw a GitLabApiException.
* *
* @param response response * @param response response
* @param expected expected response status * @param expected expected response status
* @return original response if the response status is expected * @return original response if the response status is expected
...@@ -272,9 +272,9 @@ public abstract class AbstractApi { ...@@ -272,9 +272,9 @@ public abstract class AbstractApi {
/** /**
* Wraps an exception in a GitLabApiException if needed. * Wraps an exception in a GitLabApiException if needed.
* *
* @param thrown the exception that should be wrapped * @param thrown the exception that should be wrapped
* @return either the untouched GitLabApiException or a new GitLabApiExceptin wrapping a non-GitLabApiException * @return either the untouched GitLabApiException or a new GitLabApiExceptin wrapping a non-GitLabApiException
*/ */
protected GitLabApiException handle(Exception thrown) { protected GitLabApiException handle(Exception thrown) {
...@@ -284,4 +284,24 @@ public abstract class AbstractApi { ...@@ -284,4 +284,24 @@ public abstract class AbstractApi {
return (new GitLabApiException(thrown)); return (new GitLabApiException(thrown));
} }
/**
* Creates a MultivaluedMap instance containing "page" and "per_page" params.
*
* @param page the page to get
* @param perPage the number of projects per page
* @return a MultivaluedMap instance containing "page" and "per_page" params
*/
protected MultivaluedMap<String, String> getPageQueryParams(int page, int perPage) {
return (new GitLabApiForm().withParam(PAGE_PARAM, page).withParam(PER_PAGE_PARAM, perPage).asMap());
}
/**
* Creates a MultivaluedMap instance containing the "per_page" param with the default value.
*
* @return a MultivaluedMap instance containing the "per_page" param with the default value
*/
protected MultivaluedMap<String, String> getDefaultPerPageParam() {
return (new GitLabApiForm().withParam(PER_PAGE_PARAM, getDefaultPerPage()).asMap());
}
} }
package org.gitlab4j.api; package org.gitlab4j.api;
import java.util.List;
import javax.ws.rs.core.Form; import javax.ws.rs.core.Form;
import javax.ws.rs.core.GenericType; import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
...@@ -7,8 +9,6 @@ import javax.ws.rs.core.Response; ...@@ -7,8 +9,6 @@ import javax.ws.rs.core.Response;
import org.gitlab4j.api.models.Commit; import org.gitlab4j.api.models.Commit;
import org.gitlab4j.api.models.Diff; import org.gitlab4j.api.models.Diff;
import java.util.List;
/** /**
* This class implements the client side API for the GitLab commits calls. * This class implements the client side API for the GitLab commits calls.
*/ */
...@@ -20,41 +20,68 @@ public class CommitsApi extends AbstractApi { ...@@ -20,41 +20,68 @@ public class CommitsApi extends AbstractApi {
/** /**
* Get a list of repository commits in a project. * Get a list of repository commits in a project.
* *
* GET /projects/:id/repository/commits * GET /projects/:id/repository/commits
* *
* @param projectId the project ID to get the list of commits for * @param projectId the project ID to get the list of commits for
* @return a list containing the commits for the specified project ID * @return a list containing the commits for the specified project ID
* @throws GitLabApiException GitLabApiException if any exception occurs during execution * @throws GitLabApiException GitLabApiException if any exception occurs during execution
*/ */
public List<Commit> getCommits(int projectId) throws GitLabApiException { public List<Commit> getCommits(int projectId) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("per_page", getDefaultPerPage()); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects", projectId, "repository", "commits");
Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "repository", "commits"); return (response.readEntity(new GenericType<List<Commit>>() {}));
return (response.readEntity(new GenericType<List<Commit>>() { }
}));
/**
* Get a list of repository commits in a project.
*
* GET /projects/:id/repository/commits
*
* @param projectId the project ID to get the list of commits for
* @param page the page to get
* @param perPage the number of commits per page
* @return a list containing the commits for the specified project ID
* @throws GitLabApiException GitLabApiException if any exception occurs during execution
*/
public List<Commit> getCommits(int projectId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects", projectId, "repository", "commits");
return (response.readEntity(new GenericType<List<Commit>>() {}));
}
/**
* Get a Pager of repository commits in a project.
*
* GET /projects/:id/repository/commits
*
* @param projectId the project ID to get the list of commits for
* @param itemsPerPage the number of Commit instances that will be fetched per page
* @return a Pager containing the commits for the specified project ID
* @throws GitLabApiException GitLabApiException if any exception occurs during execution
*/
public Pager<Commit> getCommits(int projectId, int itemsPerPage) throws GitLabApiException {
return (new Pager<Commit>(this, Commit.class, itemsPerPage, null, "projects", projectId, "repository", "commits"));
} }
/** /**
* Get a specific commit identified by the commit hash or name of a branch or tag. * Get a specific commit identified by the commit hash or name of a branch or tag.
* *
* GET /projects/:id/repository/commits/:sha * GET /projects/:id/repository/commits/:sha
* *
* @param projectId the project ID that the commit belongs to * @param projectId the project ID that the commit belongs to
* @param sha a commit hash or name of a branch or tag * @param sha a commit hash or name of a branch or tag
* @return the Commit instance for the specified project ID/sha pair * @return the Commit instance for the specified project ID/sha pair
* @throws GitLabApiException GitLabApiException if any exception occurs during execution * @throws GitLabApiException GitLabApiException if any exception occurs during execution
*/ */
public Commit getCommits(int projectId, String sha) throws GitLabApiException { public Commit getCommit(int projectId, String sha) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("per_page", getDefaultPerPage()); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects", projectId, "repository", "commits", sha);
Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "repository", "commits", sha);
return (response.readEntity(Commit.class)); return (response.readEntity(Commit.class));
} }
/** /**
* Get the diff of a commit in a project. * Get the diff of a commit in a project.
* *
* GET /projects/:id/repository/commits/:sha/diff * GET /projects/:id/repository/commits/:sha/diff
* *
* @param projectId the project ID that the commit belongs to * @param projectId the project ID that the commit belongs to
* @param sha a commit hash or name of a branch or tag * @param sha a commit hash or name of a branch or tag
* @return the Diff instance for the specified project ID/sha pair * @return the Diff instance for the specified project ID/sha pair
...@@ -64,4 +91,4 @@ public class CommitsApi extends AbstractApi { ...@@ -64,4 +91,4 @@ public class CommitsApi extends AbstractApi {
Response response = get(Response.Status.OK, null, "projects", projectId, "repository", "commits", sha, "diff"); Response response = get(Response.Status.OK, null, "projects", projectId, "repository", "commits", sha, "diff");
return (response.readEntity(Diff.class)); return (response.readEntity(Diff.class));
} }
} }
\ No newline at end of file
...@@ -7,6 +7,30 @@ import com.fasterxml.jackson.annotation.JsonValue; ...@@ -7,6 +7,30 @@ import com.fasterxml.jackson.annotation.JsonValue;
public interface Constants { public interface Constants {
/** The total number of items HTTP header key. */
public static final String TOTAL_HEADER = "X-Total";
/** The total number of pages HTTP header key. */
public static final String TOTAL_PAGES_HEADER = "X-Total-Pages";
/** The number of items per page HTTP header key. */
public static final String PER_PAGE = "X-Per-Page";
/** The index of the current page (starting at 1) HTTP header key. */
public static final String PAGE_HEADER = "X-Page";
/** The index of the next page HTTP header key. */
public static final String NEXT_PAGE_HEADER = "X-Next-Page";
/** The index of the previous page HTTP header key. */
public static final String PREV_PAGE_HEADER = "X-Prev-Page";
/** Items per page param HTTP header key. */
public static final String PER_PAGE_PARAM = "per_page";
/** Page param HTTP header key. */
public static final String PAGE_PARAM = "page";
/** Enum to use for ordering the results of various API calls. */ /** Enum to use for ordering the results of various API calls. */
public enum SortOrder { public enum SortOrder {
......
...@@ -38,7 +38,7 @@ public class GitLabApi { ...@@ -38,7 +38,7 @@ public class GitLabApi {
private Session session; private Session session;
/** /**
* Logs into GitLab using provided {@code username} and {@code password}, and creates a new {@code GitLabApi} instance * Logs into GitLab using provided {@code username} and {@code password}, and creates a new {@code GitLabApi} instance
* using returned private token and the specified GitLab API version. * using returned private token and the specified GitLab API version.
* *
* @param apiVersion the ApiVersion specifying which version of the API to use * @param apiVersion the ApiVersion specifying which version of the API to use
...@@ -55,7 +55,7 @@ public class GitLabApi { ...@@ -55,7 +55,7 @@ public class GitLabApi {
} }
/** /**
* Logs into GitLab using provided {@code username} and {@code password}, and creates a new {@code GitLabApi} instance * Logs into GitLab using provided {@code username} and {@code password}, and creates a new {@code GitLabApi} instance
* using returned private token using GitLab API version 4. * using returned private token using GitLab API version 4.
* *
* @param url GitLab URL * @param url GitLab URL
...@@ -69,7 +69,7 @@ public class GitLabApi { ...@@ -69,7 +69,7 @@ public class GitLabApi {
} }
/** /**
* Logs into GitLab using provided {@code username} and {@code password}, and creates a new {@code GitLabApi} instance * Logs into GitLab using provided {@code username} and {@code password}, and creates a new {@code GitLabApi} instance
* using returned private token and specified GitLab API version. * using returned private token and specified GitLab API version.
* *
* @param url GitLab URL * @param url GitLab URL
...@@ -107,7 +107,7 @@ public class GitLabApi { ...@@ -107,7 +107,7 @@ public class GitLabApi {
/** /**
* Constructs a GitLabApi instance set up to interact with the GitLab server using GitLab API version 4. * Constructs a GitLabApi instance set up to interact with the GitLab server using GitLab API version 4.
* *
* @param hostUrl the URL of the GitLab server * @param hostUrl the URL of the GitLab server
* @param privateToken to private token to use for access to the API * @param privateToken to private token to use for access to the API
*/ */
...@@ -129,7 +129,7 @@ public class GitLabApi { ...@@ -129,7 +129,7 @@ public class GitLabApi {
/** /**
* Constructs a GitLabApi instance set up to interact with the GitLab server using GitLab API version 4. * Constructs a GitLabApi instance set up to interact with the GitLab server using GitLab API version 4.
* *
* @param hostUrl the URL of the GitLab server * @param hostUrl the URL of the GitLab server
* @param session the Session instance obtained by logining into the GitLab server * @param session the Session instance obtained by logining into the GitLab server
*/ */
...@@ -151,7 +151,7 @@ public class GitLabApi { ...@@ -151,7 +151,7 @@ public class GitLabApi {
/** /**
* Constructs a GitLabApi instance set up to interact with the GitLab server using GitLab API version 4. * Constructs a GitLabApi instance set up to interact with the GitLab server using GitLab API version 4.
* *
* @param hostUrl the URL of the GitLab server * @param hostUrl the URL of the GitLab server
* @param privateToken to private token to use for access to the API * @param privateToken to private token to use for access to the API
* @param secretToken use this token to validate received payloads * @param secretToken use this token to validate received payloads
...@@ -162,7 +162,7 @@ public class GitLabApi { ...@@ -162,7 +162,7 @@ public class GitLabApi {
/** /**
* Constructs a GitLabApi instance set up to interact with the GitLab server specified by GitLab API version. * Constructs a GitLabApi instance set up to interact with the GitLab server specified by GitLab API version.
* *
* @param apiVersion the ApiVersion specifying which version of the API to use * @param apiVersion the ApiVersion specifying which version of the API to use
* @param hostUrl the URL of the GitLab server * @param hostUrl the URL of the GitLab server
* @param privateToken to private token to use for access to the API * @param privateToken to private token to use for access to the API
...@@ -199,7 +199,7 @@ public class GitLabApi { ...@@ -199,7 +199,7 @@ public class GitLabApi {
/** /**
* Return the GitLab API version that this instance is using. * Return the GitLab API version that this instance is using.
* *
* @return the GitLab API version that this instance is using * @return the GitLab API version that this instance is using
*/ */
public ApiVersion getApiVersion() { public ApiVersion getApiVersion() {
...@@ -227,7 +227,7 @@ public class GitLabApi { ...@@ -227,7 +227,7 @@ public class GitLabApi {
/** /**
* Return the GitLabApiClient associated with this instance. This is used by all the sub API classes * Return the GitLabApiClient associated with this instance. This is used by all the sub API classes
* to communicate with the GitLab API. * to communicate with the GitLab API.
* *
* @return the GitLabApiClient associated with this instance * @return the GitLabApiClient associated with this instance
*/ */
GitLabApiClient getApiClient() { GitLabApiClient getApiClient() {
...@@ -237,7 +237,7 @@ public class GitLabApi { ...@@ -237,7 +237,7 @@ public class GitLabApi {
/** /**
* Gets the CommitsApi instance owned by this GitLabApi instance. The CommitsApi is used * Gets the CommitsApi instance owned by this GitLabApi instance. The CommitsApi is used
* to perform all commit related API calls. * to perform all commit related API calls.
* *
* @return the CommitsApi instance owned by this GitLabApi instance * @return the CommitsApi instance owned by this GitLabApi instance
*/ */
public CommitsApi getCommitsApi() { public CommitsApi getCommitsApi() {
...@@ -247,7 +247,7 @@ public class GitLabApi { ...@@ -247,7 +247,7 @@ public class GitLabApi {
/** /**
* Gets the MergeRequestApi instance owned by this GitLabApi instance. The MergeRequestApi is used * Gets the MergeRequestApi instance owned by this GitLabApi instance. The MergeRequestApi is used
* to perform all merge request related API calls. * to perform all merge request related API calls.
* *
* @return the MergeRequestApi instance owned by this GitLabApi instance * @return the MergeRequestApi instance owned by this GitLabApi instance
*/ */
public MergeRequestApi getMergeRequestApi() { public MergeRequestApi getMergeRequestApi() {
...@@ -257,7 +257,7 @@ public class GitLabApi { ...@@ -257,7 +257,7 @@ public class GitLabApi {
/** /**
* Gets the NamespaceApi instance owned by this GitLabApi instance. The NamespaceApi is used * Gets the NamespaceApi instance owned by this GitLabApi instance. The NamespaceApi is used
* to perform all namespace related API calls. * to perform all namespace related API calls.
* *
* @return the NamespaceApi instance owned by this GitLabApi instance * @return the NamespaceApi instance owned by this GitLabApi instance
*/ */
public NamespaceApi getNamespaceApi() { public NamespaceApi getNamespaceApi() {
...@@ -271,7 +271,7 @@ public class GitLabApi { ...@@ -271,7 +271,7 @@ public class GitLabApi {
/** /**
* Gets the GroupApi instance owned by this GitLabApi instance. The GroupApi is used * Gets the GroupApi instance owned by this GitLabApi instance. The GroupApi is used
* to perform all group related API calls. * to perform all group related API calls.
* *
* @return the GroupApi instance owned by this GitLabApi instance * @return the GroupApi instance owned by this GitLabApi instance
*/ */
public GroupApi getGroupApi() { public GroupApi getGroupApi() {
...@@ -281,17 +281,17 @@ public class GitLabApi { ...@@ -281,17 +281,17 @@ public class GitLabApi {
/** /**
* Gets the PipelineApi instance owned by this GitLabApi instance. The PipelineApi is used * Gets the PipelineApi instance owned by this GitLabApi instance. The PipelineApi is used
* to perform all pipeline related API calls. * to perform all pipeline related API calls.
* *
* @return the PipelineApi instance owned by this GitLabApi instance * @return the PipelineApi instance owned by this GitLabApi instance
*/ */
public PipelineApi getPipelineApi() { public PipelineApi getPipelineApi() {
return (pipelineApi); return (pipelineApi);
} }
/** /**
* Gets the ProjectApi instance owned by this GitLabApi instance. The ProjectApi is used * Gets the ProjectApi instance owned by this GitLabApi instance. The ProjectApi is used
* to perform all project related API calls. * to perform all project related API calls.
* *
* @return the ProjectApi instance owned by this GitLabApi instance * @return the ProjectApi instance owned by this GitLabApi instance
*/ */
public ProjectApi getProjectApi() { public ProjectApi getProjectApi() {
...@@ -301,7 +301,7 @@ public class GitLabApi { ...@@ -301,7 +301,7 @@ public class GitLabApi {
/** /**
* Gets the RepositoryApi instance owned by this GitLabApi instance. The RepositoryApi is used * Gets the RepositoryApi instance owned by this GitLabApi instance. The RepositoryApi is used
* to perform all repository related API calls. * to perform all repository related API calls.
* *
* @return the RepositoryApi instance owned by this GitLabApi instance * @return the RepositoryApi instance owned by this GitLabApi instance
*/ */
public RepositoryApi getRepositoryApi() { public RepositoryApi getRepositoryApi() {
...@@ -311,7 +311,7 @@ public class GitLabApi { ...@@ -311,7 +311,7 @@ public class GitLabApi {
/** /**
* Gets the RepositoryFileApi instance owned by this GitLabApi instance. The RepositoryFileApi is used * Gets the RepositoryFileApi instance owned by this GitLabApi instance. The RepositoryFileApi is used
* to perform all repository files related API calls. * to perform all repository files related API calls.
* *
* @return the RepositoryFileApi instance owned by this GitLabApi instance * @return the RepositoryFileApi instance owned by this GitLabApi instance
*/ */
public RepositoryFileApi getRepositoryFileApi() { public RepositoryFileApi getRepositoryFileApi() {
...@@ -321,7 +321,7 @@ public class GitLabApi { ...@@ -321,7 +321,7 @@ public class GitLabApi {
/** /**
* Gets the ServicesApi instance owned by this GitLabApi instance. The ServicesApi is used * Gets the ServicesApi instance owned by this GitLabApi instance. The ServicesApi is used
* to perform all services related API calls. * to perform all services related API calls.
* *
* @return the ServicesApi instance owned by this GitLabApi instance * @return the ServicesApi instance owned by this GitLabApi instance
*/ */
public ServicesApi getServicesApi() { public ServicesApi getServicesApi() {
...@@ -331,7 +331,7 @@ public class GitLabApi { ...@@ -331,7 +331,7 @@ public class GitLabApi {
/** /**
* Gets the SessionApi instance owned by this GitLabApi instance. The SessionApi is used * Gets the SessionApi instance owned by this GitLabApi instance. The SessionApi is used
* to perform a login to the GitLab API. * to perform a login to the GitLab API.
* *
* @return the SessionApi instance owned by this GitLabApi instance * @return the SessionApi instance owned by this GitLabApi instance
*/ */
public SessionApi getSessionApi() { public SessionApi getSessionApi() {
...@@ -341,7 +341,7 @@ public class GitLabApi { ...@@ -341,7 +341,7 @@ public class GitLabApi {
/** /**
* Gets the UserApi instance owned by this GitLabApi instance. The UserApi is used * Gets the UserApi instance owned by this GitLabApi instance. The UserApi is used
* to perform all user related API calls. * to perform all user related API calls.
* *
* @return the UserApi instance owned by this GitLabApi instance * @return the UserApi instance owned by this GitLabApi instance
*/ */
public UserApi getUserApi() { public UserApi getUserApi() {
......
package org.gitlab4j.api; package org.gitlab4j.api;
import java.util.List;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response;
import org.gitlab4j.api.GitLabApi.ApiVersion; import org.gitlab4j.api.GitLabApi.ApiVersion;
import org.gitlab4j.api.models.Group; import org.gitlab4j.api.models.Group;
import org.gitlab4j.api.models.Member; import org.gitlab4j.api.models.Member;
import org.gitlab4j.api.models.Project; import org.gitlab4j.api.models.Project;
import org.gitlab4j.api.models.Visibility; import org.gitlab4j.api.models.Visibility;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response;
import java.util.List;
/** /**
* This class implements the client side API for the GitLab groups calls. * This class implements the client side API for the GitLab groups calls.
*/ */
...@@ -22,30 +23,84 @@ public class GroupApi extends AbstractApi { ...@@ -22,30 +23,84 @@ public class GroupApi extends AbstractApi {
/** /**
* Get a list of groups. (As user: my groups, as admin: all groups) * Get a list of groups. (As user: my groups, as admin: all groups)
* *
* GET /groups * GET /groups
* *
* @return the list of groups viewable by the authenticated user * @return the list of groups viewable by the authenticated user
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Group> getGroups() throws GitLabApiException { public List<Group> getGroups() throws GitLabApiException {
Response response = get(Response.Status.OK, null, "groups"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "groups");
return (response.readEntity(new GenericType<List<Group>>() { return (response.readEntity(new GenericType<List<Group>>() {}));
})); }
/**
* Get a list of groups (As user: my groups, as admin: all groups) and in the specified page range.
*
* GET /groups
*
* @param page the page to get
* @param perPage the number of Group instances per page
* @return the list of groups viewable by the authenticated userin the specified page range
* @throws GitLabApiException if any exception occurs
*/
public List<Group> getGroups(int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "groups");
return (response.readEntity(new GenericType<List<Group>>() {}));
}
/**
* Get a Pager of groups. (As user: my groups, as admin: all groups)
*
* GET /groups
*
* @param itemsPerPage the number of Group instances that will be fetched per page
* @return the list of groups viewable by the authenticated user
* @throws GitLabApiException if any exception occurs
*/
public Pager<Group> getGroups(int itemsPerPage) throws GitLabApiException {
return (new Pager<Group>(this, Group.class, itemsPerPage, null, "groups"));
} }
/** /**
* Get all groups that match your string in their name or path. * Get all groups that match your string in their name or path.
* *
* @param search the group name or path search criteria * @param search the group name or path search criteria
* @return a List containing matching Group instances * @return a List containing matching Group instances
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Group> getGroups(String search) throws GitLabApiException { public List<Group> getGroups(String search) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("search", search).withParam("per_page", getDefaultPerPage()); Form formData = new GitLabApiForm().withParam("search", search).withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "groups");
return (response.readEntity(new GenericType<List<Group>>() {}));
}
/**
* Get all groups that match your string in their name or path.
*
* @param search the group name or path search criteria
* @param page the page to get
* @param perPage the number of Group instances per page
* @return a List containing matching Group instances
* @throws GitLabApiException if any exception occurs
*/
public List<Group> getGroups(String search, int page, int perPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("search", search).withParam(PAGE_PARAM, page).withParam(PER_PAGE_PARAM, perPage);
Response response = get(Response.Status.OK, formData.asMap(), "groups"); Response response = get(Response.Status.OK, formData.asMap(), "groups");
return (response.readEntity(new GenericType<List<Group>>() { return (response.readEntity(new GenericType<List<Group>>() {}));
})); }
/**
* Get all groups that match your string in their name or path.
*
* @param search the group name or path search criteria
* @param itemsPerPage the number of Group instances that will be fetched per page
* @return a List containing matching Group instances
* @throws GitLabApiException if any exception occurs
*/
public Pager<Group> getGroups(String search, int itemsPerPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("search", search);
return (new Pager<Group>(this, Group.class, itemsPerPage, formData.asMap(), "groups"));
} }
/** /**
...@@ -58,16 +113,45 @@ public class GroupApi extends AbstractApi { ...@@ -58,16 +113,45 @@ public class GroupApi extends AbstractApi {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Project> getProjects(int groupId) throws GitLabApiException { public List<Project> getProjects(int groupId) throws GitLabApiException {
Response response = get(Response.Status.OK, null, "groups", groupId, "projects"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "groups", groupId, "projects");
return (response.readEntity(new GenericType<List<Project>>() { return (response.readEntity(new GenericType<List<Project>>() {}));
})); }
/**
* Get a list of projects belonging to the specified group ID in the specified page range.
*
* GET /groups/:id/projects
*
* @param groupId the group ID to list the projects for
* @param page the page to get
* @param perPage the number of Project instances per page
* @return a list of projects belonging to the specified group ID in the specified page range
* @throws GitLabApiException if any exception occurs
*/
public List<Project> getProjects(int groupId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "groups", groupId, "projects");
return (response.readEntity(new GenericType<List<Project>>() {}));
}
/**
* Get a Pager of projects belonging to the specified group ID.
*
* GET /groups/:id/projects
*
* @param groupId the group ID to list the projects for
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager of projects belonging to the specified group ID
* @throws GitLabApiException if any exception occurs
*/
public Pager<Project> getProjects(int groupId, int itemsPerPage) throws GitLabApiException {
return (new Pager<Project>(this, Project.class, itemsPerPage, null, "groups", groupId, "projects"));
} }
/** /**
* Get all details of a group. * Get all details of a group.
* *
* GET /groups/:id * GET /groups/:id
* *
* @param groupId the group ID to get * @param groupId the group ID to get
* @return the Group instance for the specified group ID * @return the Group instance for the specified group ID
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -79,9 +163,9 @@ public class GroupApi extends AbstractApi { ...@@ -79,9 +163,9 @@ public class GroupApi extends AbstractApi {
/** /**
* Creates a new project group. Available only for users who can create groups. * Creates a new project group. Available only for users who can create groups.
* *
* POST /groups * POST /groups
* *
* @param name the name of the group to add * @param name the name of the group to add
* @param path the path for the group * @param path the path for the group
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -96,9 +180,9 @@ public class GroupApi extends AbstractApi { ...@@ -96,9 +180,9 @@ public class GroupApi extends AbstractApi {
/** /**
* Creates a new project group. Available only for users who can create groups. * Creates a new project group. Available only for users who can create groups.
* *
* POST /groups * POST /groups
* *
* @param name the name of the group to add * @param name the name of the group to add
* @param path the path for the group * @param path the path for the group
* @param description (optional) - The group's description * @param description (optional) - The group's description
...@@ -131,7 +215,7 @@ public class GroupApi extends AbstractApi { ...@@ -131,7 +215,7 @@ public class GroupApi extends AbstractApi {
/** /**
* Creates a new project group. Available only for users who can create groups. * Creates a new project group. Available only for users who can create groups.
* *
* PUT /groups * PUT /groups
* *
* @param groupId the ID of the group to update * @param groupId the ID of the group to update
...@@ -170,9 +254,9 @@ public class GroupApi extends AbstractApi { ...@@ -170,9 +254,9 @@ public class GroupApi extends AbstractApi {
/** /**
* Removes group with all projects inside. * Removes group with all projects inside.
* *
* DELETE /groups/:id * DELETE /groups/:id
* *
* @param groupId the group ID to delete * @param groupId the group ID to delete
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
...@@ -188,9 +272,9 @@ public class GroupApi extends AbstractApi { ...@@ -188,9 +272,9 @@ public class GroupApi extends AbstractApi {
/** /**
* Removes group with all projects inside. * Removes group with all projects inside.
* *
* DELETE /groups/:id * DELETE /groups/:id
* *
* @param group the Group instance to delete * @param group the Group instance to delete
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
...@@ -200,24 +284,53 @@ public class GroupApi extends AbstractApi { ...@@ -200,24 +284,53 @@ public class GroupApi extends AbstractApi {
/** /**
* Get a list of group members viewable by the authenticated user. * Get a list of group members viewable by the authenticated user.
* *
* GET /groups/:id/members * GET /groups/:id/members
* *
* @param groupId the group ID to list the members for * @param groupId the group ID to list the members for
* @return a list of group members viewable by the authenticated user * @return a list of group members viewable by the authenticated user
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Member> getMembers(int groupId) throws GitLabApiException { public List<Member> getMembers(int groupId) throws GitLabApiException {
Response response = get(Response.Status.OK, null, "groups", groupId, "members"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "groups", groupId, "members");
return (response.readEntity(new GenericType<List<Member>>() { return (response.readEntity(new GenericType<List<Member>>() {}));
})); }
/**
* Get a list of group members viewable by the authenticated user in the specified page range.
*
* GET /groups/:id/members
*
* @param groupId the group ID to list the members for
* @param page the page to get
* @param perPage the number of Member instances per page
* @return a list of group members viewable by the authenticated user in the specified page range
* @throws GitLabApiException if any exception occurs
*/
public List<Member> getMembers(int groupId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "groups", groupId, "members");
return (response.readEntity(new GenericType<List<Member>>() {}));
}
/**
* Get a Pager of group members viewable by the authenticated user.
*
* GET /groups/:id/members
*
* @param groupId the group ID to list the members for
* @param itemsPerPage the number of Member instances that will be fetched per page
* @return a list of group members viewable by the authenticated user
* @throws GitLabApiException if any exception occurs
*/
public Pager<Member> getMembers(int groupId, int itemsPerPage) throws GitLabApiException {
return (new Pager<Member>(this, Member.class, itemsPerPage, null, "groups", groupId, "members"));
} }
/** /**
* Adds a user to the list of group members. * Adds a user to the list of group members.
* *
* POST /groups/:id/members * POST /groups/:id/members
* *
* @param groupId the project ID to add the member to * @param groupId the project ID to add the member to
* @param userId the user ID of the member to add * @param userId the user ID of the member to add
* @param accessLevel the access level for the new member * @param accessLevel the access level for the new member
...@@ -235,9 +348,9 @@ public class GroupApi extends AbstractApi { ...@@ -235,9 +348,9 @@ public class GroupApi extends AbstractApi {
/** /**
* Removes member from the group team. * Removes member from the group team.
* *
* DELETE /groups/:id/members/:user_id * DELETE /groups/:id/members/:user_id
* *
* @param projectId the project ID to remove the member from * @param projectId the project ID to remove the member from
* @param userId the user ID of the member to remove * @param userId the user ID of the member to remove
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -246,4 +359,4 @@ public class GroupApi extends AbstractApi { ...@@ -246,4 +359,4 @@ public class GroupApi extends AbstractApi {
Response.Status expectedStatus = (isApiVersion(ApiVersion.V3) ? Response.Status.OK : Response.Status.NO_CONTENT); Response.Status expectedStatus = (isApiVersion(ApiVersion.V3) ? Response.Status.OK : Response.Status.NO_CONTENT);
delete(expectedStatus, null, "groups", projectId, "members", userId); delete(expectedStatus, null, "groups", projectId, "members", userId);
} }
} }
\ No newline at end of file
...@@ -27,9 +27,38 @@ public class MergeRequestApi extends AbstractApi { ...@@ -27,9 +27,38 @@ public class MergeRequestApi extends AbstractApi {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<MergeRequest> getMergeRequests(Integer projectId) throws GitLabApiException { public List<MergeRequest> getMergeRequests(Integer projectId) throws GitLabApiException {
Response response = get(Response.Status.OK, null, "projects", projectId, "merge_requests"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects", projectId, "merge_requests");
return (response.readEntity(new GenericType<List<MergeRequest>>() { return (response.readEntity(new GenericType<List<MergeRequest>>() {}));
})); }
/**
* Get all merge requests for the specified project.
*
* GET /projects/:id/merge_requests
*
* @param projectId the project ID to get the merge requests for
* @param page the page to get
* @param perPage the number of MergeRequest instances per page
* @return all merge requests for the specified project
* @throws GitLabApiException if any exception occurs
*/
public List<MergeRequest> getMergeRequests(Integer projectId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects", projectId, "merge_requests");
return (response.readEntity(new GenericType<List<MergeRequest>>() {}));
}
/**
* Get all merge requests for the specified project.
*
* GET /projects/:id/merge_requests
*
* @param projectId the project ID to get the merge requests for
* @param itemsPerPage the number of MergeRequest instances that will be fetched per page
* @return all merge requests for the specified project
* @throws GitLabApiException if any exception occurs
*/
public Pager<MergeRequest> getMergeRequests(Integer projectId, int itemsPerPage) throws GitLabApiException {
return (new Pager<MergeRequest>(this, MergeRequest.class, itemsPerPage, null, "projects", projectId, "merge_requests"));
} }
/** /**
......
...@@ -18,32 +18,92 @@ public class NamespaceApi extends AbstractApi { ...@@ -18,32 +18,92 @@ public class NamespaceApi extends AbstractApi {
/** /**
* Get a list of the namespaces of the authenticated user. If the user is an administrator, * Get a list of the namespaces of the authenticated user. If the user is an administrator,
* a list of all namespaces in the GitLab instance is shown. * a list of all namespaces in the GitLab instance is created.
* *
* GET /namespaces * GET /namespaces
* *
* @return a List of Namespace instances * @return a List of Namespace instances
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Namespace> getNamespaces() throws GitLabApiException { public List<Namespace> getNamespaces() throws GitLabApiException {
Response response = get(Response.Status.OK, null, "namespaces"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "namespaces");
return (response.readEntity(new GenericType<List<Namespace>>() { return (response.readEntity(new GenericType<List<Namespace>>() {}));
})); }
/**
* Get a list of the namespaces of the authenticated user. If the user is an administrator,
* a list of all namespaces in the GitLab instance is created.
*
* GET /namespaces
*
* @param page the page to get
* @param perPage the number of Namespace instances per page
* @return a List of Namespace instances in the specified page range
* @throws GitLabApiException if any exception occurs
*/
public List<Namespace> getNamespaces(int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "namespaces");
return (response.readEntity(new GenericType<List<Namespace>>() {}));
}
/**
* Get a Pager of the namespaces of the authenticated user. If the user is an administrator,
* a Pager of all namespaces in the GitLab instance is created.
*
* GET /namespaces
*
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager of Namespace instances
* @throws GitLabApiException if any exception occurs
*/
public Pager<Namespace> getNamespaces(int itemsPerPage) throws GitLabApiException {
return (new Pager<Namespace>(this, Namespace.class, itemsPerPage, null, "namespaces"));
} }
/** /**
* Get all namespaces that match a string in their name or path. * Get all namespaces that match a string in their name or path.
* *
* GET /namespaces?search=:query * GET /namespaces?search=:query
* *
* @param query the search string * @param query the search string
* @return the Namespace List with the matching namespaces * @return the Namespace List with the matching namespaces
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Namespace> findNamespaces(String query) throws GitLabApiException { public List<Namespace> findNamespaces(String query) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm().withParam("search", query, true); GitLabApiForm formData = new GitLabApiForm().withParam("search", query, true).withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "namespaces"); Response response = get(Response.Status.OK, formData.asMap(), "namespaces");
return (response.readEntity(new GenericType<List<Namespace>>() { return (response.readEntity(new GenericType<List<Namespace>>() {}));
})); }
/**
* Get all namespaces that match a string in their name or path in the specified page range.
*
* GET /namespaces?search=:query
*
* @param query the search string
* @param page the page to get
* @param perPage the number of Namespace instances per page
* @return the Namespace List with the matching namespaces
* @throws GitLabApiException if any exception occurs
*/
public List<Namespace> findNamespaces(String query, int page, int perPage) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm().withParam("search", query, true).withParam(PAGE_PARAM, perPage).withParam(PER_PAGE_PARAM, perPage);
Response response = get(Response.Status.OK, formData.asMap(), "namespaces");
return (response.readEntity(new GenericType<List<Namespace>>() {}));
}
/**
* Get a Pager of all namespaces that match a string in their name or path.
*
* GET /namespaces?search=:query
*
* @param query the search string
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager of Namespace instances with the matching namespaces
* @throws GitLabApiException if any exception occurs
*/
public Pager<Namespace> getNamespaces(String query, int itemsPerPage) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm().withParam("search", query, true);
return (new Pager<Namespace>(this, Namespace.class, itemsPerPage, formData.asMap(), "namespaces"));
} }
} }
...@@ -27,9 +27,38 @@ public class PipelineApi extends AbstractApi implements Constants { ...@@ -27,9 +27,38 @@ public class PipelineApi extends AbstractApi implements Constants {
* @throws GitLabApiException if any exception occurs during execution * @throws GitLabApiException if any exception occurs during execution
*/ */
public List<Pipeline> getPipelines(int projectId) throws GitLabApiException { public List<Pipeline> getPipelines(int projectId) throws GitLabApiException {
Response response = get(Response.Status.OK, null, "projects", projectId, "pipelines"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects", projectId, "pipelines");
return (response.readEntity(new GenericType<List<Pipeline>>() { return (response.readEntity(new GenericType<List<Pipeline>>() {}));
})); }
/**
* Get a list of pipelines in a project in the specified page range.
*
* GET /projects/:id/pipelines
*
* @param projectId the project ID to get the list of pipelines for
* @param page the page to get
* @param perPage the number of Pipeline instances per page
* @return a list containing the pipelines for the specified project ID in the specified page range
* @throws GitLabApiException if any exception occurs during execution
*/
public List<Pipeline> getPipelines(int projectId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects", projectId, "pipelines");
return (response.readEntity(new GenericType<List<Pipeline>>() {}));
}
/**
* Get a Pager of pipelines in a project.
*
* GET /projects/:id/pipelines
*
* @param projectId the project ID to get the list of pipelines for
* @param itemsPerPage the number of Pipeline instances that will be fetched per page
* @return a Pager containing the pipelines for the specified project ID
* @throws GitLabApiException if any exception occurs during execution
*/
public Pager<Pipeline> getPipelines(int projectId, int itemsPerPage) throws GitLabApiException {
return (new Pager<Pipeline>(this, Pipeline.class, itemsPerPage, null, "projects", projectId, "pipelines"));
} }
/** /**
...@@ -49,7 +78,7 @@ public class PipelineApi extends AbstractApi implements Constants { ...@@ -49,7 +78,7 @@ public class PipelineApi extends AbstractApi implements Constants {
* @return a list containing the pipelines for the specified project ID * @return a list containing the pipelines for the specified project ID
* @throws GitLabApiException if any exception occurs during execution * @throws GitLabApiException if any exception occurs during execution
*/ */
public List<Pipeline> getPipelines(int projectId, PipelineScope scope, PipelineStatus status, String ref, boolean yamlErrors, public List<Pipeline> getPipelines(int projectId, PipelineScope scope, PipelineStatus status, String ref, boolean yamlErrors,
String name, String username, PipelineOrderBy orderBy, SortOrder sort) throws GitLabApiException { String name, String username, PipelineOrderBy orderBy, SortOrder sort) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm() GitLabApiForm formData = new GitLabApiForm()
.withParam("scope", scope) .withParam("scope", scope)
...@@ -59,11 +88,81 @@ public class PipelineApi extends AbstractApi implements Constants { ...@@ -59,11 +88,81 @@ public class PipelineApi extends AbstractApi implements Constants {
.withParam("name", name) .withParam("name", name)
.withParam("username", username) .withParam("username", username)
.withParam("order_by", orderBy) .withParam("order_by", orderBy)
.withParam("sort", sort); .withParam("sort", sort)
.withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "pipelines"); Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "pipelines");
return (response.readEntity(new GenericType<List<Pipeline>>() { return (response.readEntity(new GenericType<List<Pipeline>>() {}));
})); }
/**
* Get a list of pipelines in a project in the specified page range.
*
* GET /projects/:id/pipelines
*
* @param projectId the project ID to get the list of pipelines for
* @param scope the scope of pipelines, one of: RUNNING, PENDING, FINISHED, BRANCHES, TAGS
* @param status the status of pipelines, one of: RUNNING, PENDING, SUCCESS, FAILED, CANCELED, SKIPPED
* @param ref the ref of pipelines
* @param yamlErrors returns pipelines with invalid configurations
* @param name the name of the user who triggered pipelines
* @param username the username of the user who triggered pipelines
* @param orderBy order pipelines by ID, STATUS, REF, USER_ID (default: ID)
* @param sort sort pipelines in ASC or DESC order (default: DESC)
* @param page the page to get
* @param perPage the number of Pipeline instances per page
* @return a list containing the pipelines for the specified project ID
* @throws GitLabApiException if any exception occurs during execution
*/
public List<Pipeline> getPipelines(int projectId, PipelineScope scope, PipelineStatus status, String ref, boolean yamlErrors,
String name, String username, PipelineOrderBy orderBy, SortOrder sort, int page, int perPage) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm()
.withParam("scope", scope)
.withParam("status", status)
.withParam("ref", ref)
.withParam("yaml_errors", yamlErrors)
.withParam("name", name)
.withParam("username", username)
.withParam("order_by", orderBy)
.withParam("sort", sort)
.withParam("page", page)
.withParam(PER_PAGE_PARAM, perPage);
Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "pipelines");
return (response.readEntity(new GenericType<List<Pipeline>>() {}));
}
/**
* Get a Pager of pipelines in a project.
*
* GET /projects/:id/pipelines
*
* @param projectId the project ID to get the list of pipelines for
* @param scope the scope of pipelines, one of: RUNNING, PENDING, FINISHED, BRANCHES, TAGS
* @param status the status of pipelines, one of: RUNNING, PENDING, SUCCESS, FAILED, CANCELED, SKIPPED
* @param ref the ref of pipelines
* @param yamlErrors returns pipelines with invalid configurations
* @param name the name of the user who triggered pipelines
* @param username the username of the user who triggered pipelines
* @param orderBy order pipelines by ID, STATUS, REF, USER_ID (default: ID)
* @param sort sort pipelines in ASC or DESC order (default: DESC)
* @param itemsPerPage the number of Pipeline instances that will be fetched per page
* @return a list containing the pipelines for the specified project ID
* @throws GitLabApiException if any exception occurs during execution
*/
public Pager<Pipeline> getPipelines(int projectId, PipelineScope scope, PipelineStatus status, String ref, boolean yamlErrors,
String name, String username, PipelineOrderBy orderBy, SortOrder sort, int itemsPerPage) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm()
.withParam("scope", scope)
.withParam("status", status)
.withParam("ref", ref)
.withParam("yaml_errors", yamlErrors)
.withParam("name", name)
.withParam("username", username)
.withParam("order_by", orderBy)
.withParam("sort", sort);
return (new Pager<Pipeline>(this, Pipeline.class, itemsPerPage, formData.asMap(), "projects", projectId, "pipelines"));
} }
/** /**
......
...@@ -23,21 +23,19 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -23,21 +23,19 @@ public class ProjectApi extends AbstractApi implements Constants {
public ProjectApi(GitLabApi gitLabApi) { public ProjectApi(GitLabApi gitLabApi) {
super(gitLabApi); super(gitLabApi);
} }
/** /**
* Get a list of projects accessible by the authenticated user. * Get a list of projects accessible by the authenticated user.
* *
* GET /projects * GET /projects
* *
* @return a list of projects accessible by the authenticated user * @return a list of projects accessible by the authenticated user
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Project> getProjects() throws GitLabApiException { public List<Project> getProjects() throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("per_page", getDefaultPerPage()); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects");
Response response = get(Response.Status.OK, formData.asMap(), "projects"); return (response.readEntity(new GenericType<List<Project>>() {}));
return (response.readEntity(new GenericType<List<Project>>() {
}));
} }
/** /**
...@@ -51,14 +49,23 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -51,14 +49,23 @@ public class ProjectApi extends AbstractApi implements Constants {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Project> getProjects(int page, int perPage) throws GitLabApiException { public List<Project> getProjects(int page, int perPage) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm() Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects");
.withParam("page", page, false) return (response.readEntity(new GenericType<List<Project>>() { }));
.withParam("per_page", perPage, false);
Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() {
}));
} }
/**
* Get a Pager instance of projects accessible by the authenticated user.
*
* GET /projects
*
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager instance of projects accessible by the authenticated user
* @throws GitLabApiException if any exception occurs
*/
public Pager<Project> getProjects(int itemsPerPage) throws GitLabApiException {
return (new Pager<Project>(this, Project.class, itemsPerPage, null, "projects"));
}
/** /**
* Get a list of projects accessible by the authenticated user and matching the supplied filter parameters. * Get a list of projects accessible by the authenticated user and matching the supplied filter parameters.
* All filter parameters are optional. * All filter parameters are optional.
...@@ -77,7 +84,7 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -77,7 +84,7 @@ public class ProjectApi extends AbstractApi implements Constants {
* @param statistics include project statistics * @param statistics include project statistics
* @return a list of projects accessible by the authenticated user and matching the supplied parameters * @return a list of projects accessible by the authenticated user and matching the supplied parameters
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
* @deprecated Will be removed in version 5.0, replaced by {@link #getProjects(Boolean, Visibility, * @deprecated Will be removed in version 5.0, replaced by {@link #getProjects(Boolean, Visibility,
* Constants.ProjectOrderBy, Constants.SortOrder, String, Boolean, Boolean, Boolean, Boolean, Boolean)} * Constants.ProjectOrderBy, Constants.SortOrder, String, Boolean, Boolean, Boolean, Boolean, Boolean)}
*/ */
public List<Project> getProjects(Boolean archived, Visibility visibility, String orderBy, public List<Project> getProjects(Boolean archived, Visibility visibility, String orderBy,
...@@ -95,11 +102,10 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -95,11 +102,10 @@ public class ProjectApi extends AbstractApi implements Constants {
.withParam("membership", membership) .withParam("membership", membership)
.withParam("starred", starred) .withParam("starred", starred)
.withParam("statistics", statistics) .withParam("statistics", statistics)
.withParam("per_page", getDefaultPerPage()); .withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "projects"); Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() { return (response.readEntity(new GenericType<List<Project>>() {}));
}));
} }
/** /**
...@@ -110,7 +116,7 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -110,7 +116,7 @@ public class ProjectApi extends AbstractApi implements Constants {
* *
* @param archived limit by archived status * @param archived limit by archived status
* @param visibility limit by visibility public, internal, or private * @param visibility limit by visibility public, internal, or private
* @param orderBy return projects ordered by ID, NAME, PATH, CREATED_AT, UPDATED_AT, or * @param orderBy return projects ordered by ID, NAME, PATH, CREATED_AT, UPDATED_AT, or
* LAST_ACTIVITY_AT fields, default is CREATED_AT * LAST_ACTIVITY_AT fields, default is CREATED_AT
* @param sort return projects sorted in asc or desc order. Default is desc * @param sort return projects sorted in asc or desc order. Default is desc
* @param search return list of projects matching the search criteria * @param search return list of projects matching the search criteria
...@@ -137,11 +143,94 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -137,11 +143,94 @@ public class ProjectApi extends AbstractApi implements Constants {
.withParam("membership", membership) .withParam("membership", membership)
.withParam("starred", starred) .withParam("starred", starred)
.withParam("statistics", statistics) .withParam("statistics", statistics)
.withParam("per_page", getDefaultPerPage()); .withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "projects"); Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() { return (response.readEntity(new GenericType<List<Project>>() {}));
})); }
/**
* Get a list of projects accessible by the authenticated user and matching the supplied filter parameters.
* All filter parameters are optional.
*
* GET /projects
*
* @param archived limit by archived status
* @param visibility limit by visibility public, internal, or private
* @param orderBy return projects ordered by ID, NAME, PATH, CREATED_AT, UPDATED_AT, or
* LAST_ACTIVITY_AT fields, default is CREATED_AT
* @param sort return projects sorted in asc or desc order. Default is desc
* @param search return list of projects matching the search criteria
* @param simple return only the ID, URL, name, and path of each project
* @param owned limit by projects owned by the current user
* @param membership limit by projects that the current user is a member of
* @param starred limit by projects starred by the current user
* @param statistics include project statistics
* @param page the page to get
* @param perPage the number of projects per page
* @return a list of projects accessible by the authenticated user and matching the supplied parameters
* @throws GitLabApiException if any exception occurs
*/
public List<Project> getProjects(Boolean archived, Visibility visibility, ProjectOrderBy orderBy,
SortOrder sort, String search, Boolean simple, Boolean owned, Boolean membership,
Boolean starred, Boolean statistics, int page, int perPage) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm()
.withParam("archived", archived)
.withParam("visibility", visibility)
.withParam("order_by", orderBy)
.withParam("sort", sort)
.withParam("search", search)
.withParam("simple", simple)
.withParam("owned", owned)
.withParam("membership", membership)
.withParam("starred", starred)
.withParam("statistics", statistics)
.withParam(PAGE_PARAM, page)
.withParam(PER_PAGE_PARAM, perPage);
Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() {}));
}
/**
* Get a Pager of projects accessible by the authenticated user and matching the supplied filter parameters.
* All filter parameters are optional.
*
* GET /projects
*
* @param archived limit by archived status
* @param visibility limit by visibility public, internal, or private
* @param orderBy return projects ordered by ID, NAME, PATH, CREATED_AT, UPDATED_AT, or
* LAST_ACTIVITY_AT fields, default is CREATED_AT
* @param sort return projects sorted in asc or desc order. Default is desc
* @param search return list of projects matching the search criteria
* @param simple return only the ID, URL, name, and path of each project
* @param owned limit by projects owned by the current user
* @param membership limit by projects that the current user is a member of
* @param starred limit by projects starred by the current user
* @param statistics include project statistics
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager of projects accessible by the authenticated user and matching the supplied parameters
* @throws GitLabApiException if any exception occurs
*/
public Pager<Project> getProjects(Boolean archived, Visibility visibility, ProjectOrderBy orderBy,
SortOrder sort, String search, Boolean simple, Boolean owned, Boolean membership,
Boolean starred, Boolean statistics, int itemsPerPage) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm()
.withParam("archived", archived)
.withParam("visibility", visibility)
.withParam("order_by", orderBy)
.withParam("sort", sort)
.withParam("search", search)
.withParam("simple", simple)
.withParam("owned", owned)
.withParam("membership", membership)
.withParam("starred", starred)
.withParam("statistics", statistics);
return (new Pager<Project>(this, Project.class, itemsPerPage, formData.asMap(), "projects"));
} }
/** /**
...@@ -154,33 +243,92 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -154,33 +243,92 @@ public class ProjectApi extends AbstractApi implements Constants {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Project> getProjects(String search) throws GitLabApiException { public List<Project> getProjects(String search) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("search", search).withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() {}));
}
Form formData = new GitLabApiForm().withParam("search", search).withParam("per_page", getDefaultPerPage()); /**
* Get a list of projects accessible by the authenticated user that match the provided search string.
*
* GET /projects?search=search
*
* @param search the project name search criteria
* @param page the page to get
* @param perPage the number of projects per page
* @return a list of projects accessible by the authenticated user that match the provided search string
* @throws GitLabApiException if any exception occurs
*/
public List<Project> getProjects(String search, int page, int perPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("search", search).withParam(PAGE_PARAM, page).withParam(PER_PAGE_PARAM, perPage);
Response response = get(Response.Status.OK, formData.asMap(), "projects"); Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() { return (response.readEntity(new GenericType<List<Project>>() {}));
})); }
/**
* Get a Pager of projects accessible by the authenticated user that match the provided search string.
*
* GET /projects?search=search
*
* @param search the project name search criteria
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager of projects accessible by the authenticated user that match the provided search string
* @throws GitLabApiException if any exception occurs
*/
public Pager<Project> getProjects(String search, int itemsPerPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("search", search);
return (new Pager<Project>(this, Project.class, itemsPerPage, formData.asMap(), "projects"));
} }
/** /**
* Get a list of projects that the authenticated user is a member of. * Get a list of projects that the authenticated user is a member of.
* *
* GET /projects * GET /projects
* *
* @return a list of projects that the authenticated user is a member of * @return a list of projects that the authenticated user is a member of
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Project> getMemberProjects() throws GitLabApiException { public List<Project> getMemberProjects() throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("membership", true).withParam("per_page", getDefaultPerPage()); Form formData = new GitLabApiForm().withParam("membership", true).withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "projects"); Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() { return (response.readEntity(new GenericType<List<Project>>() {}));
})); }
/**
* Get a list of projects that the authenticated user is a member of in the specified page range.
*
* GET /projects
*
* @param page the page to get
* @param perPage the number of projects per page
* @return a list of projects that the authenticated user is a member of
* @throws GitLabApiException if any exception occurs
*/
public List<Project> getMemberProjects(int page, int perPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("membership", true).withParam(PAGE_PARAM, page).withParam(PER_PAGE_PARAM, perPage);
Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() {}));
}
/**
* Get a Pager of projects that the authenticated user is a member of.
*
* GET /projects
*
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager o Project instances that the authenticated user is a member of
* @throws GitLabApiException if any exception occurs
*/
public Pager<Project> getMemberProjects(int itemsPerPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("membership", true);
return (new Pager<Project>(this, Project.class, itemsPerPage, formData.asMap(), "projects"));
} }
/** /**
* Get a list of all GitLab projects (admin only). * Get a list of all GitLab projects (admin only).
* *
* GET /projects/all * GET /projects/all
* *
* @return a list of all GitLab projects * @return a list of all GitLab projects
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
* @deprecated Will be removed, no longer supported by the GitLab API * @deprecated Will be removed, no longer supported by the GitLab API
...@@ -191,10 +339,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -191,10 +339,9 @@ public class ProjectApi extends AbstractApi implements Constants {
throw new GitLabApiException("Not supported by GitLab API version " + this.getApiVersion()); throw new GitLabApiException("Not supported by GitLab API version " + this.getApiVersion());
} }
Form formData = new GitLabApiForm().withParam("per_page", getDefaultPerPage()); Form formData = new GitLabApiForm().withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "projects", "all"); Response response = get(Response.Status.OK, formData.asMap(), "projects", "all");
return (response.readEntity(new GenericType<List<Project>>() { return (response.readEntity(new GenericType<List<Project>>() {}));
}));
} }
/** /**
...@@ -206,36 +353,90 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -206,36 +353,90 @@ public class ProjectApi extends AbstractApi implements Constants {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Project> getOwnedProjects() throws GitLabApiException { public List<Project> getOwnedProjects() throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("owned", true).withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() { }));
}
Form formData = new GitLabApiForm().withParam("owned", true).withParam("per_page", getDefaultPerPage()); /**
* Get a list of projects owned by the authenticated user in the specified page range.
*
* GET /projects
*
* @param page the page to get
* @param perPage the number of projects per page
* @return a list of projects owned by the authenticated user
* @throws GitLabApiException if any exception occurs
*/
public List<Project> getOwnedProjects(int page, int perPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("owned", true).withParam(PAGE_PARAM, page).withParam(PER_PAGE_PARAM, perPage);
Response response = get(Response.Status.OK, formData.asMap(), "projects"); Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() { return (response.readEntity(new GenericType<List<Project>>() {}));
})); }
/**
* Get a Pager of projects owned by the authenticated user.
*
* GET /projects
*
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a list of projects owned by the authenticated user
* @throws GitLabApiException if any exception occurs
*/
public Pager<Project> getOwnedProjects(int itemsPerPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("owned", true);
return (new Pager<Project>(this, Project.class, itemsPerPage, formData.asMap(), "projects"));
} }
/** /**
* Get a list of projects starred by the authenticated user. * Get a list of projects starred by the authenticated user.
* *
* GET /projects * GET /projects
* *
* @return a list of projects starred by the authenticated user * @return a list of projects starred by the authenticated user
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Project> getStarredProjects() throws GitLabApiException { public List<Project> getStarredProjects() throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("starred", true).withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() {}));
}
Form formData = new GitLabApiForm() /**
.withParam("starred", true) * Get a list of projects starred by the authenticated user in the specified page range.
.withParam("per_page", getDefaultPerPage()); *
* GET /projects
*
* @param page the page to get
* @param perPage the number of projects per page
* @return a list of projects starred by the authenticated user
* @throws GitLabApiException if any exception occurs
*/
public List<Project> getStarredProjects(int page, int perPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("starred", true).withParam(PAGE_PARAM, page).withParam(PER_PAGE_PARAM, perPage);
Response response = get(Response.Status.OK, formData.asMap(), "projects"); Response response = get(Response.Status.OK, formData.asMap(), "projects");
return (response.readEntity(new GenericType<List<Project>>() { return (response.readEntity(new GenericType<List<Project>>() {}));
})); }
/**
* Get a Pager of projects starred by the authenticated user.
*
* GET /projects
*
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager of projects starred by the authenticated user
* @throws GitLabApiException if any exception occurs
*/
public Pager<Project> getStarredProjects(int itemsPerPage) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("starred", true).withParam(PER_PAGE_PARAM, getDefaultPerPage());
return (new Pager<Project>(this, Project.class, itemsPerPage, formData.asMap(), "projects"));
} }
/** /**
* Get a specific project, which is owned by the authentication user. * Get a specific project, which is owned by the authentication user.
* *
* GET /projects/:id * GET /projects/:id
* *
* @param projectId the ID of the project to get * @param projectId the ID of the project to get
* @return the specified project * @return the specified project
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -249,7 +450,7 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -249,7 +450,7 @@ public class ProjectApi extends AbstractApi implements Constants {
* Get a specific project, which is owned by the authentication user. * Get a specific project, which is owned by the authentication user.
* *
* GET /projects/:id * GET /projects/:id
* *
* @param namespace the name of the project namespace or group * @param namespace the name of the project namespace or group
* @param project the name of the project to get * @param project the name of the project to get
* @return the specified project * @return the specified project
...@@ -278,7 +479,7 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -278,7 +479,7 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Create a new project in the specified group. * Create a new project in the specified group.
* *
* @param groupId the group ID to create the project under * @param groupId the group ID to create the project under
* @param projectName the name of the project top create * @param projectName the name of the project top create
* @return the created project * @return the created project
...@@ -286,33 +487,27 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -286,33 +487,27 @@ public class ProjectApi extends AbstractApi implements Constants {
*/ */
public Project createProject(Integer groupId, String projectName) throws GitLabApiException { public Project createProject(Integer groupId, String projectName) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm() GitLabApiForm formData = new GitLabApiForm().withParam("namespace_id", groupId).withParam("name", projectName, true);
.withParam("namespace_id", groupId)
.withParam("name", projectName, true);
Response response = post(Response.Status.CREATED, formData, "projects"); Response response = post(Response.Status.CREATED, formData, "projects");
return (response.readEntity(Project.class)); return (response.readEntity(Project.class));
} }
/** /**
* Create a new project with the current user's namespace. * Create a new project with the current user's namespace.
* *
* @param projectName the name of the project top create * @param projectName the name of the project top create
* @return the created project * @return the created project
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public Project createProject(String projectName) throws GitLabApiException { public Project createProject(String projectName) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm().withParam("name", projectName, true);
GitLabApiForm formData = new GitLabApiForm()
.withParam("name", projectName, true);
Response response = post(Response.Status.CREATED, formData, "projects"); Response response = post(Response.Status.CREATED, formData, "projects");
return (response.readEntity(Project.class)); return (response.readEntity(Project.class));
} }
/** /**
* Creates new project owned by the current user. * Creates new project owned by the current user.
* *
* @param project the Project instance with the configuration for the new project * @param project the Project instance with the configuration for the new project
* @return a Project instance with the newly created project info * @return a Project instance with the newly created project info
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -324,7 +519,7 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -324,7 +519,7 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Creates new project owned by the current user. The following properties on the Project instance * Creates new project owned by the current user. The following properties on the Project instance
* are utilized in the creation of the project: * are utilized in the creation of the project:
* *
* name (name or path are required) - new project name * name (name or path are required) - new project name
* path (name or path are required) - new project path * path (name or path are required) - new project path
* defaultBranch (optional) - master by default * defaultBranch (optional) - master by default
...@@ -345,7 +540,7 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -345,7 +540,7 @@ public class ProjectApi extends AbstractApi implements Constants {
* requestAccessEnabled (optional) - Allow users to request member access * requestAccessEnabled (optional) - Allow users to request member access
* repositoryStorage (optional) - Which storage shard the repository is on. Available only to admins * repositoryStorage (optional) - Which storage shard the repository is on. Available only to admins
* approvalsBeforeMerge (optional) - How many approvers should approve merge request by default * approvalsBeforeMerge (optional) - How many approvers should approve merge request by default
* *
* @param project the Project instance with the configuration for the new project * @param project the Project instance with the configuration for the new project
* @param importUrl the URL to import the repository from * @param importUrl the URL to import the repository from
* @return a Project instance with the newly created project info * @return a Project instance with the newly created project info
...@@ -497,9 +692,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -497,9 +692,9 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Removes project with all resources(issues, merge requests etc). * Removes project with all resources(issues, merge requests etc).
* *
* DELETE /projects/:id * DELETE /projects/:id
* *
* @param projectId the project ID to remove * @param projectId the project ID to remove
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
...@@ -515,9 +710,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -515,9 +710,9 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Removes project with all resources(issues, merge requests etc). * Removes project with all resources(issues, merge requests etc).
* *
* DELETE /projects/:id * DELETE /projects/:id
* *
* @param project the Project instance to remove * @param project the Project instance to remove
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
...@@ -527,24 +722,53 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -527,24 +722,53 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Get a list of project team members. * Get a list of project team members.
* *
* GET /projects/:id/members * GET /projects/:id/members
* *
* @param projectId the project ID to get team members for * @param projectId the project ID to get team members for
* @return the members belonging to the specified project * @return the members belonging to the specified project
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Member> getMembers(Integer projectId) throws GitLabApiException { public List<Member> getMembers(Integer projectId) throws GitLabApiException {
Response response = get(Response.Status.OK, null, "projects", projectId, "members"); Response response = get(Response.Status.OK, this.getDefaultPerPageParam(), "projects", projectId, "members");
return (response.readEntity(new GenericType<List<Member>>() { return (response.readEntity(new GenericType<List<Member>>() {}));
})); }
/**
* Get a list of project team members in the specified page range.
*
* GET /projects/:id/members
*
* @param projectId the project ID to get team members for
* @param page the page to get
* @param perPage the number of Member instances per page
* @return the members belonging to the specified project
* @throws GitLabApiException if any exception occurs
*/
public List<Member> getMembers(Integer projectId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects", projectId, "members");
return (response.readEntity(new GenericType<List<Member>>() {}));
}
/**
* Get a Pager of project team members.
*
* GET /projects/:id/members
*
* @param projectId the project ID to get team members for
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return the members belonging to the specified project
* @throws GitLabApiException if any exception occurs
*/
public Pager<Member> getMembers(Integer projectId, int itemsPerPage) throws GitLabApiException {
return (new Pager<Member>(this, Member.class, itemsPerPage, null, "projects", projectId, "members"));
} }
/** /**
* Gets a project team member. * Gets a project team member.
* *
* GET /projects/:id/members/:user_id * GET /projects/:id/members/:user_id
* *
* @param projectId the project ID to get team member for * @param projectId the project ID to get team member for
* @param userId the user ID of the member * @param userId the user ID of the member
* @return the member specified by the project ID/user ID pair * @return the member specified by the project ID/user ID pair
...@@ -559,9 +783,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -559,9 +783,9 @@ public class ProjectApi extends AbstractApi implements Constants {
* Adds a user to a project team. This is an idempotent method and can be called multiple times * Adds a user to a project team. This is an idempotent method and can be called multiple times
* with the same parameters. Adding team membership to a user that is already a member does not * with the same parameters. Adding team membership to a user that is already a member does not
* affect the existing membership. * affect the existing membership.
* *
* POST /projects/:id/members * POST /projects/:id/members
* *
* @param projectId the project ID to add the team member to * @param projectId the project ID to add the team member to
* @param userId the user ID of the member to add * @param userId the user ID of the member to add
* @param accessLevel the access level for the new member * @param accessLevel the access level for the new member
...@@ -569,19 +793,16 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -569,19 +793,16 @@ public class ProjectApi extends AbstractApi implements Constants {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public Member addMember(Integer projectId, Integer userId, Integer accessLevel) throws GitLabApiException { public Member addMember(Integer projectId, Integer userId, Integer accessLevel) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm().withParam("user_id", userId, true).withParam("access_level", accessLevel, true);
GitLabApiForm formData = new GitLabApiForm()
.withParam("user_id", userId, true)
.withParam("access_level", accessLevel, true);
Response response = post(Response.Status.CREATED, formData, "projects", projectId, "members"); Response response = post(Response.Status.CREATED, formData, "projects", projectId, "members");
return (response.readEntity(Member.class)); return (response.readEntity(Member.class));
} }
/** /**
* Removes user from project team. * Removes user from project team.
* *
* DELETE /projects/:id/members/:user_id * DELETE /projects/:id/members/:user_id
* *
* @param projectId the project ID to remove the team member from * @param projectId the project ID to remove the team member from
* @param userId the user ID of the member to remove * @param userId the user ID of the member to remove
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -592,40 +813,98 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -592,40 +813,98 @@ public class ProjectApi extends AbstractApi implements Constants {
} }
/** /**
* Get a project events for specific project. Sorted from newest to latest. * Get the project events for specific project. Sorted from newest to latest.
* *
* GET /projects/:id/events * GET /projects/:id/events
* *
* @param projectId the project ID to get events for * @param projectId the project ID to get events for
* @return the project events for the specified project * @return the project events for the specified project
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Event> getProjectEvents(Integer projectId) throws GitLabApiException { public List<Event> getProjectEvents(Integer projectId) throws GitLabApiException {
Response response = get(Response.Status.OK, null, "projects", projectId, "events"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects", projectId, "events");
return (response.readEntity(new GenericType<List<Event>>() { return (response.readEntity(new GenericType<List<Event>>() {}));
})); }
/**
* Get the project events for specific project. Sorted from newest to latest in the specified page range.
*
* GET /projects/:id/events
*
* @param projectId the project ID to get events for
* @param page the page to get
* @param perPage the number of Event instances per page
* @return the project events for the specified project
* @throws GitLabApiException if any exception occurs
*/
public List<Event> getProjectEvents(Integer projectId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects", projectId, "events");
return (response.readEntity(new GenericType<List<Event>>() {}));
}
/**
* Get a Pager of project events for specific project. Sorted from newest to latest.
*
* GET /projects/:id/events
*
* @param projectId the project ID to get events for
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager of project events for the specified project
* @throws GitLabApiException if any exception occurs
*/
public Pager<Event> getProjectEvents(Integer projectId, int itemsPerPage) throws GitLabApiException {
return (new Pager<Event>(this, Event.class, itemsPerPage, null, "projects", projectId, "events"));
} }
/** /**
* Get list of project hooks. * Get list of project hooks.
* *
* GET /projects/:id/hooks * GET /projects/:id/hooks
* *
* @param projectId the project ID to get project hooks for * @param projectId the project ID to get project hooks for
* @return a list of project hooks for the specified project * @return a list of project hooks for the specified project
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<ProjectHook> getHooks(Integer projectId) throws GitLabApiException { public List<ProjectHook> getHooks(Integer projectId) throws GitLabApiException {
Response response = get(Response.Status.OK, null, "projects", projectId, "hooks"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects", projectId, "hooks");
return (response.readEntity(new GenericType<List<ProjectHook>>() { return (response.readEntity(new GenericType<List<ProjectHook>>() {}));
})); }
/**
* Get list of project hooks in the specified page range.
*
* GET /projects/:id/hooks
*
* @param projectId the project ID to get project hooks for
* @param page the page to get
* @param perPage the number of ProjectHook instances per page
* @return a list of project hooks for the specified project in the specified page range
* @throws GitLabApiException if any exception occurs
*/
public List<ProjectHook> getHooks(Integer projectId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects", projectId, "hooks");
return (response.readEntity(new GenericType<List<ProjectHook>>() {}));
}
/**
* Get Pager of project hooks.
*
* GET /projects/:id/hooks
*
* @param projectId the project ID to get project hooks for
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager of project hooks for the specified project
* @throws GitLabApiException if any exception occurs
*/
public Pager<ProjectHook> getHooks(Integer projectId, int itemsPerPage) throws GitLabApiException {
return (new Pager<ProjectHook>(this, ProjectHook.class, itemsPerPage, null, "projects", projectId, "hooks"));
} }
/** /**
* Get a specific hook for project. * Get a specific hook for project.
* *
* GET /projects/:id/hooks/:hook_id * GET /projects/:id/hooks/:hook_id
* *
* @param projectId the project ID to get the hook for * @param projectId the project ID to get the hook for
* @param hookId the ID of the hook to get * @param hookId the ID of the hook to get
* @return the project hook for the specified project ID/hook ID pair * @return the project hook for the specified project ID/hook ID pair
...@@ -635,12 +914,12 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -635,12 +914,12 @@ public class ProjectApi extends AbstractApi implements Constants {
Response response = get(Response.Status.OK, null, "projects", projectId, "hooks", hookId); Response response = get(Response.Status.OK, null, "projects", projectId, "hooks", hookId);
return (response.readEntity(ProjectHook.class)); return (response.readEntity(ProjectHook.class));
} }
/** /**
* Adds a hook to project. * Adds a hook to project.
* *
* POST /projects/:id/hooks * POST /projects/:id/hooks
* *
* @param projectName the name of the project * @param projectName the name of the project
* @param url the callback URL for the hook * @param url the callback URL for the hook
* @param enabledHooks a ProjectHook instance specifying which hooks to enable * @param enabledHooks a ProjectHook instance specifying which hooks to enable
...@@ -654,7 +933,7 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -654,7 +933,7 @@ public class ProjectApi extends AbstractApi implements Constants {
if (projectName == null) { if (projectName == null) {
return (null); return (null);
} }
GitLabApiForm formData = new GitLabApiForm() GitLabApiForm formData = new GitLabApiForm()
.withParam("url", url, true) .withParam("url", url, true)
.withParam("push_events", enabledHooks.getPushEvents(), false) .withParam("push_events", enabledHooks.getPushEvents(), false)
...@@ -673,9 +952,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -673,9 +952,9 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Adds a hook to project. * Adds a hook to project.
* *
* POST /projects/:id/hooks * POST /projects/:id/hooks
* *
* @param projectId the project ID to add the project hook to * @param projectId the project ID to add the project hook to
* @param url the callback URL for the hook * @param url the callback URL for the hook
* @param enabledHooks a ProjectHook instance specifying which hooks to enable * @param enabledHooks a ProjectHook instance specifying which hooks to enable
...@@ -689,7 +968,7 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -689,7 +968,7 @@ public class ProjectApi extends AbstractApi implements Constants {
if (projectId == null) { if (projectId == null) {
return (null); return (null);
} }
GitLabApiForm formData = new GitLabApiForm() GitLabApiForm formData = new GitLabApiForm()
.withParam("url", url, true) .withParam("url", url, true)
.withParam("push_events", enabledHooks.getPushEvents(), false) .withParam("push_events", enabledHooks.getPushEvents(), false)
...@@ -708,9 +987,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -708,9 +987,9 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Adds a hook to project. * Adds a hook to project.
* *
* POST /projects/:id/hooks * POST /projects/:id/hooks
* *
* @param project the Project instance to add the project hook to * @param project the Project instance to add the project hook to
* @param url the callback URL for the hook * @param url the callback URL for the hook
* @param enabledHooks a ProjectHook instance specifying which hooks to enable * @param enabledHooks a ProjectHook instance specifying which hooks to enable
...@@ -730,9 +1009,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -730,9 +1009,9 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Adds a hook to project. * Adds a hook to project.
* *
* POST /projects/:id/hooks * POST /projects/:id/hooks
* *
* @param project the Project instance to add the project hook to * @param project the Project instance to add the project hook to
* @param url the callback URL for the hook * @param url the callback URL for the hook
* @param doPushEvents flag specifying whether to do push events * @param doPushEvents flag specifying whether to do push events
...@@ -752,9 +1031,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -752,9 +1031,9 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Adds a hook to project. * Adds a hook to project.
* *
* POST /projects/:id/hooks * POST /projects/:id/hooks
* *
* @param projectId the project ID to add the project hook to * @param projectId the project ID to add the project hook to
* @param url the callback URL for the hook * @param url the callback URL for the hook
* @param doPushEvents flag specifying whether to do push events * @param doPushEvents flag specifying whether to do push events
...@@ -777,9 +1056,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -777,9 +1056,9 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Deletes a hook from the project. * Deletes a hook from the project.
* *
* DELETE /projects/:id/hooks/:hook_id * DELETE /projects/:id/hooks/:hook_id
* *
* @param projectId the project ID to delete the project hook from * @param projectId the project ID to delete the project hook from
* @param hookId the project hook ID to delete * @param hookId the project hook ID to delete
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -791,9 +1070,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -791,9 +1070,9 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Deletes a hook from the project. * Deletes a hook from the project.
* *
* DELETE /projects/:id/hooks/:hook_id * DELETE /projects/:id/hooks/:hook_id
* *
* @param hook the ProjectHook instance to remove * @param hook the ProjectHook instance to remove
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
...@@ -803,9 +1082,9 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -803,9 +1082,9 @@ public class ProjectApi extends AbstractApi implements Constants {
/** /**
* Modifies a hook for project. * Modifies a hook for project.
* *
* PUT /projects/:id/hooks/:hook_id * PUT /projects/:id/hooks/:hook_id
* *
* @param hook the ProjectHook instance that contains the project hook info to modify * @param hook the ProjectHook instance that contains the project hook info to modify
* @return the modified project hook * @return the modified project hook
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -839,10 +1118,8 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -839,10 +1118,8 @@ public class ProjectApi extends AbstractApi implements Constants {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Issue> getIssues(Integer projectId) throws GitLabApiException { public List<Issue> getIssues(Integer projectId) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("per_page", getDefaultPerPage()); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects", projectId, "issues");
Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "issues"); return (response.readEntity(new GenericType<List<Issue>>() {}));
return (response.readEntity(new GenericType<List<Issue>>() {
}));
} }
/** /**
...@@ -857,12 +1134,21 @@ public class ProjectApi extends AbstractApi implements Constants { ...@@ -857,12 +1134,21 @@ public class ProjectApi extends AbstractApi implements Constants {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Issue> getIssues(Integer projectId, int page, int perPage) throws GitLabApiException { public List<Issue> getIssues(Integer projectId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects", projectId, "issues");
return (response.readEntity(new GenericType<List<Issue>>() {}));
}
GitLabApiForm formData = new GitLabApiForm() /**
.withParam("page", page, false) * Get a Pager of project's issues.
.withParam("per_page", perPage, false); *
Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "issues"); * GET /projects/:id/issues
return (response.readEntity(new GenericType<List<Issue>>() { *
})); * @param projectId the project ID to get the issues for
* @param itemsPerPage the number of issues per page
* @return the list of issues in the specified range
* @throws GitLabApiException if any exception occurs
*/
public Pager<Issue> getIssues(Integer projectId, int itemsPerPage) throws GitLabApiException {
return (new Pager<Issue>(this, Issue.class, itemsPerPage, null, "projects", projectId, "issues"));
} }
} }
...@@ -28,25 +28,54 @@ public class RepositoryApi extends AbstractApi { ...@@ -28,25 +28,54 @@ public class RepositoryApi extends AbstractApi {
/** /**
* Get a list of repository branches from a project, sorted by name alphabetically. * Get a list of repository branches from a project, sorted by name alphabetically.
* *
* GET /projects/:id/repository/branches * GET /projects/:id/repository/branches
* *
* @param projectId the project to get the list of branches for * @param projectId the project to get the list of branches for
* @return the list of repository branches for the specified project ID * @return the list of repository branches for the specified project ID
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Branch> getBranches(Integer projectId) throws GitLabApiException { public List<Branch> getBranches(Integer projectId) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("per_page", getDefaultPerPage()); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects", projectId, "repository", "branches");
Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "repository", "branches"); return (response.readEntity(new GenericType<List<Branch>>() {}));
return (response.readEntity(new GenericType<List<Branch>>() { }
}));
/**
* Get a list of repository branches from a project, sorted by name alphabetically.
*
* GET /projects/:id/repository/branches
*
* @param projectId the project to get the list of branches for
* @return the list of repository branches for the specified project ID
* @param page the page to get
* @param perPage the number of Branch instances per page
* @throws GitLabApiException if any exception occurs
*/
public List<Branch> getBranches(Integer projectId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects", projectId, "repository", "branches");
return (response.readEntity(new GenericType<List<Branch>>() {}));
}
/**
* Get a Pager of repository branches from a project, sorted by name alphabetically.
*
* GET /projects/:id/repository/branches
*
* @param projectId the project to get the list of branches for
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return the list of repository branches for the specified project ID
*
* @throws GitLabApiException if any exception occurs
*/
public Pager<Branch> getBranches(Integer projectId, int itemsPerPage) throws GitLabApiException {
return (new Pager<Branch>(this, Branch.class, itemsPerPage, null, "projects", projectId, "repository", "branches"));
} }
/** /**
* Get a single project repository branch. * Get a single project repository branch.
* *
* GET /projects/:id/repository/branches/:branch * GET /projects/:id/repository/branches/:branch
* *
* @param projectId the project to get the branch for * @param projectId the project to get the branch for
* @param branchName the name of the branch to get * @param branchName the name of the branch to get
* @return the branch info for the specified project ID/branch name pair * @return the branch info for the specified project ID/branch name pair
...@@ -59,9 +88,9 @@ public class RepositoryApi extends AbstractApi { ...@@ -59,9 +88,9 @@ public class RepositoryApi extends AbstractApi {
/** /**
* Creates a branch for the project. Support as of version 6.8.x * Creates a branch for the project. Support as of version 6.8.x
* *
* POST /projects/:id/repository/branches * POST /projects/:id/repository/branches
* *
* @param projectId the project to create the branch for * @param projectId the project to create the branch for
* @param branchName the name of the branch to create * @param branchName the name of the branch to create
* @param ref Source to create the branch from, can be an existing branch, tag or commit SHA * @param ref Source to create the branch from, can be an existing branch, tag or commit SHA
...@@ -81,9 +110,9 @@ public class RepositoryApi extends AbstractApi { ...@@ -81,9 +110,9 @@ public class RepositoryApi extends AbstractApi {
/** /**
* Delete a single project repository branch. This is an idempotent function, * Delete a single project repository branch. This is an idempotent function,
* protecting an already protected repository branch will not produce an error. * protecting an already protected repository branch will not produce an error.
* *
* DELETE /projects/:id/repository/branches/:branch * DELETE /projects/:id/repository/branches/:branch
* *
* @param projectId the project that the branch belongs to * @param projectId the project that the branch belongs to
* @param branchName the name of the branch to delete * @param branchName the name of the branch to delete
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -96,9 +125,9 @@ public class RepositoryApi extends AbstractApi { ...@@ -96,9 +125,9 @@ public class RepositoryApi extends AbstractApi {
/** /**
* Protects a single project repository branch. This is an idempotent function, * Protects a single project repository branch. This is an idempotent function,
* protecting an already protected repository branch will not produce an error. * protecting an already protected repository branch will not produce an error.
* *
* PUT /projects/:id/repository/branches/:branch/protect * PUT /projects/:id/repository/branches/:branch/protect
* *
* @param projectId the ID of the project to protect * @param projectId the ID of the project to protect
* @param branchName the name of the branch to protect * @param branchName the name of the branch to protect
* @return the branch info for the protected branch * @return the branch info for the protected branch
...@@ -112,9 +141,9 @@ public class RepositoryApi extends AbstractApi { ...@@ -112,9 +141,9 @@ public class RepositoryApi extends AbstractApi {
/** /**
* Unprotects a single project repository branch. This is an idempotent function, unprotecting an * Unprotects a single project repository branch. This is an idempotent function, unprotecting an
* already unprotected repository branch will not produce an error. * already unprotected repository branch will not produce an error.
* *
* PUT /projects/:id/repository/branches/:branch/unprotect * PUT /projects/:id/repository/branches/:branch/unprotect
* *
* @param projectId the ID of the project to un-protect * @param projectId the ID of the project to un-protect
* @param branchName the name of the branch to un-protect * @param branchName the name of the branch to un-protect
* @return the branch info for the unprotected branch * @return the branch info for the unprotected branch
...@@ -127,24 +156,53 @@ public class RepositoryApi extends AbstractApi { ...@@ -127,24 +156,53 @@ public class RepositoryApi extends AbstractApi {
/** /**
* Get a list of repository tags from a project, sorted by name in reverse alphabetical order. * Get a list of repository tags from a project, sorted by name in reverse alphabetical order.
* *
* GET /projects/:id/repository/tags * GET /projects/:id/repository/tags
* *
* @param projectId the ID of the project to get the tags for * @param projectId the ID of the project to get the tags for
* @return the list of tags for the specified project ID * @return the list of tags for the specified project ID
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<Tag> getTags(Integer projectId) throws GitLabApiException { public List<Tag> getTags(Integer projectId) throws GitLabApiException {
Response response = get(Response.Status.OK, null, "projects", projectId, "repository", "tags"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "projects", projectId, "repository", "tags");
return (response.readEntity(new GenericType<List<Tag>>() { return (response.readEntity(new GenericType<List<Tag>>() {}));
})); }
/**
* Get a list of repository tags from a project, sorted by name in reverse alphabetical order and in the specified page range.
*
* GET /projects/:id/repository/tags
*
* @param projectId the ID of the project to get the tags for
* @param page the page to get
* @param perPage the number of Tag instances per page
* @return the list of tags for the specified project ID
* @throws GitLabApiException if any exception occurs
*/
public List<Tag> getTags(Integer projectId, int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "projects", projectId, "repository", "tags");
return (response.readEntity(new GenericType<List<Tag>>() {}));
} }
/**
* Get a list of repository tags from a project, sorted by name in reverse alphabetical order.
*
* GET /projects/:id/repository/tags
*
* @param projectId the ID of the project to get the tags for
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return the list of tags for the specified project ID
* @throws GitLabApiException if any exception occurs
*/
public Pager<Tag> getTags(Integer projectId, int itemsPerPage) throws GitLabApiException {
return (new Pager<Tag>(this, Tag.class, itemsPerPage, null, "projects", projectId, "repository", "tags"));
}
/** /**
* Creates a tag on a particular ref of the given project. A message and release notes are optional. * Creates a tag on a particular ref of the given project. A message and release notes are optional.
* *
* POST /projects/:id/repository/tags * POST /projects/:id/repository/tags
* *
* @param projectId the ID of the project * @param projectId the ID of the project
* @param tagName The name of the tag Must be unique for the project * @param tagName The name of the tag Must be unique for the project
* @param ref the git ref to place the tag on * @param ref the git ref to place the tag on
...@@ -168,9 +226,9 @@ public class RepositoryApi extends AbstractApi { ...@@ -168,9 +226,9 @@ public class RepositoryApi extends AbstractApi {
* Creates a tag on a particular ref of a given project. A message and a File instance containing the * Creates a tag on a particular ref of a given project. A message and a File instance containing the
* release notes are optional. This method is the same as {@link #createTag(Integer, String, String, String, String)}, * release notes are optional. This method is the same as {@link #createTag(Integer, String, String, String, String)},
* but instead allows the release notes to be supplied in a file. * but instead allows the release notes to be supplied in a file.
* *
* POST /projects/:id/repository/tags * POST /projects/:id/repository/tags
* *
* @param projectId the ID of the project * @param projectId the ID of the project
* @param tagName the name of the tag, must be unique for the project * @param tagName the name of the tag, must be unique for the project
* @param ref the git ref to place the tag on * @param ref the git ref to place the tag on
...@@ -180,7 +238,7 @@ public class RepositoryApi extends AbstractApi { ...@@ -180,7 +238,7 @@ public class RepositoryApi extends AbstractApi {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public Tag createTag(Integer projectId, String tagName, String ref, String message, File releaseNotesFile) throws GitLabApiException { public Tag createTag(Integer projectId, String tagName, String ref, String message, File releaseNotesFile) throws GitLabApiException {
String releaseNotes; String releaseNotes;
if (releaseNotesFile != null) { if (releaseNotesFile != null) {
try { try {
...@@ -197,9 +255,9 @@ public class RepositoryApi extends AbstractApi { ...@@ -197,9 +255,9 @@ public class RepositoryApi extends AbstractApi {
/** /**
* Deletes the tag from a project with the specified tag name. * Deletes the tag from a project with the specified tag name.
* *
* DELETE /projects/:id/repository/tags/:tag_name * DELETE /projects/:id/repository/tags/:tag_name
* *
* @param projectId the ID of the project * @param projectId the ID of the project
* @param tagName The name of the tag to delete * @param tagName The name of the tag to delete
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -211,15 +269,29 @@ public class RepositoryApi extends AbstractApi { ...@@ -211,15 +269,29 @@ public class RepositoryApi extends AbstractApi {
/** /**
* Get a list of repository files and directories in a project. * Get a list of repository files and directories in a project.
* *
* GET /projects/:id/repository/tree * GET /projects/:id/repository/tree
* *
* @param projectId the ID of the project to get the files for * @param projectId the ID of the project to get the files for
* @return a tree with the root directories and files of a project * @return a tree with the root directories and files of a project
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<TreeItem> getTree(Integer projectId) throws GitLabApiException { public List<TreeItem> getTree(Integer projectId) throws GitLabApiException {
return this.getTree(projectId, "/", "master"); return (getTree(projectId, "/", "master"));
}
/**
* Get a Pager of repository files and directories in a project.
*
* GET /projects/:id/repository/tree
*
* @param projectId the ID of the project to get the files for
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager containing a tree with the root directories and files of a project
* @throws GitLabApiException if any exception occurs
*/
public Pager<TreeItem> getTree(Integer projectId, int itemsPerPage) throws GitLabApiException {
return (getTree(projectId, "/", "master", false, itemsPerPage));
} }
/** /**
...@@ -230,7 +302,7 @@ public class RepositoryApi extends AbstractApi { ...@@ -230,7 +302,7 @@ public class RepositoryApi extends AbstractApi {
* id (required) - The ID of a project * id (required) - The ID of a project
* path (optional) - The path inside repository. Used to get content of subdirectories * path (optional) - The path inside repository. Used to get content of subdirectories
* ref_name (optional) - The name of a repository branch or tag or if not given the default branch * ref_name (optional) - The name of a repository branch or tag or if not given the default branch
* *
* @param projectId the ID of the project to get the files for * @param projectId the ID of the project to get the files for
* @param filePath the path inside repository, used to get content of subdirectories * @param filePath the path inside repository, used to get content of subdirectories
* @param refName the name of a repository branch or tag or if not given the default branch * @param refName the name of a repository branch or tag or if not given the default branch
...@@ -241,6 +313,26 @@ public class RepositoryApi extends AbstractApi { ...@@ -241,6 +313,26 @@ public class RepositoryApi extends AbstractApi {
return (getTree(projectId, filePath, refName, false)); return (getTree(projectId, filePath, refName, false));
} }
/**
* Get a Pager of repository files and directories in a project.
*
* GET /projects/:id/repository/tree
*
* id (required) - The ID of a project
* path (optional) - The path inside repository. Used to get content of subdirectories
* ref_name (optional) - The name of a repository branch or tag or if not given the default branch
*
* @param projectId the ID of the project to get the files for
* @param filePath the path inside repository, used to get content of subdirectories
* @param refName the name of a repository branch or tag or if not given the default branch
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager containing a tree with the directories and files of a project
* @throws GitLabApiException if any exception occurs
*/
public Pager<TreeItem> getTree(Integer projectId, String filePath, String refName, int itemsPerPage) throws GitLabApiException {
return (getTree(projectId, filePath, refName, false, itemsPerPage));
}
/** /**
* Get a list of repository files and directories in a project. * Get a list of repository files and directories in a project.
* *
...@@ -263,10 +355,37 @@ public class RepositoryApi extends AbstractApi { ...@@ -263,10 +355,37 @@ public class RepositoryApi extends AbstractApi {
.withParam("id", projectId, true) .withParam("id", projectId, true)
.withParam("path", filePath, false) .withParam("path", filePath, false)
.withParam("ref_name", refName, false) .withParam("ref_name", refName, false)
.withParam("recursive", recursive, false); .withParam("recursive", recursive, false)
.withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "repository", "tree"); Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "repository", "tree");
return (response.readEntity(new GenericType<List<TreeItem>>() { return (response.readEntity(new GenericType<List<TreeItem>>() {}));
})); }
/**
* Get a Pager of repository files and directories in a project.
*
* GET /projects/:id/repository/tree
*
* id (required) - The ID of a project
* path (optional) - The path inside repository. Used to get contend of subdirectories
* ref_name (optional) - The name of a repository branch or tag or if not given the default branch
* recursive (optional) - Boolean value used to get a recursive tree (false by default)
*
* @param projectId the ID of the project to get the files for
* @param filePath the path inside repository, used to get content of subdirectories
* @param refName the name of a repository branch or tag or if not given the default branch
* @param recursive flag to get a recursive tree or not
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return a tree with the directories and files of a project
* @throws GitLabApiException if any exception occurs
*/
public Pager<TreeItem> getTree(Integer projectId, String filePath, String refName, Boolean recursive, int itemsPerPage) throws GitLabApiException {
Form formData = new GitLabApiForm()
.withParam("id", projectId, true)
.withParam("path", filePath, false)
.withParam("ref_name", refName, false)
.withParam("recursive", recursive, false);
return (new Pager<TreeItem>(this, TreeItem.class, itemsPerPage, formData.asMap(), "projects", projectId, "repository", "tree"));
} }
/** /**
...@@ -280,25 +399,25 @@ public class RepositoryApi extends AbstractApi { ...@@ -280,25 +399,25 @@ public class RepositoryApi extends AbstractApi {
* @return a string with the file content for the specified file * @return a string with the file content for the specified file
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public String getRawFileContent(Integer projectId, String commitOrBranchName, String filepath) throws GitLabApiException { public InputStream getRawFileContent(Integer projectId, String commitOrBranchName, String filepath) throws GitLabApiException {
Form formData = new GitLabApiForm().withParam("filepath", filepath, true); Form formData = new GitLabApiForm().withParam("filepath", filepath, true);
Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "repository", "blobs", commitOrBranchName); Response response = get(Response.Status.OK, formData.asMap(), "projects", projectId, "repository", "blobs", commitOrBranchName);
return (response.readEntity(String.class)); return (response.readEntity(InputStream.class));
} }
/** /**
* Get the raw file contents for a blob by blob SHA. * Get the raw file contents for a blob by blob SHA.
* *
* GET /projects/:id/repository/raw_blobs/:sha * GET /projects/:id/repository/raw_blobs/:sha
* *
* @param projectId the ID of the project * @param projectId the ID of the project
* @param sha the SHA of the file to get the contents for * @param sha the SHA of the file to get the contents for
* @return the raw file contents for the blob * @return the raw file contents for the blob on an InputStream
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public String getRawBlobCotent(Integer projectId, String sha) throws GitLabApiException { public InputStream getRawBlobContent(Integer projectId, String sha) throws GitLabApiException {
Response response = get(Response.Status.OK, null, "projects", projectId, "repository", "raw_blobs", sha); Response response = get(Response.Status.OK, null, "projects", projectId, "repository", "raw_blobs", sha);
return (response.readEntity(String.class)); return (response.readEntity(InputStream.class));
} }
/** /**
...@@ -306,7 +425,7 @@ public class RepositoryApi extends AbstractApi { ...@@ -306,7 +425,7 @@ public class RepositoryApi extends AbstractApi {
* *
* GET /projects/:id/repository/archive * GET /projects/:id/repository/archive
* *
* @param projectId the ID of the project * @param projectId the ID of the project
* @param sha the SHA of the archive to get * @param sha the SHA of the archive to get
* @return an input stream that can be used to save as a file * @return an input stream that can be used to save as a file
* or to read the content of the archive * or to read the content of the archive
...@@ -324,7 +443,7 @@ public class RepositoryApi extends AbstractApi { ...@@ -324,7 +443,7 @@ public class RepositoryApi extends AbstractApi {
* *
* GET /projects/:id/repository/archive * GET /projects/:id/repository/archive
* *
* @param projectId the ID of the project * @param projectId the ID of the project
* @param sha the SHA of the archive to get * @param sha the SHA of the archive to get
* @param directory the File instance of the directory to save the archive to, if null will use "java.io.tmpdir" * @param directory the File instance of the directory to save the archive to, if null will use "java.io.tmpdir"
* @return a File instance pointing to the downloaded instance * @return a File instance pointing to the downloaded instance
......
...@@ -16,9 +16,9 @@ public class SessionApi extends AbstractApi { ...@@ -16,9 +16,9 @@ public class SessionApi extends AbstractApi {
/** /**
* Login to get private token. * Login to get private token.
* *
* POST /session * POST /session
* *
* @param username the username to login * @param username the username to login
* @param email the email address to login * @param email the email address to login
* @param password the password of the user * @param password the password of the user
......
...@@ -20,43 +20,50 @@ public class UserApi extends AbstractApi { ...@@ -20,43 +20,50 @@ public class UserApi extends AbstractApi {
/** /**
* Get a list of users. Only returns the first page * Get a list of users. Only returns the first page
* *
* GET /users * GET /users
* *
* @return a list of Users, this list will only contain the first 20 users in the system. * @return a list of Users, this list will only contain the first 20 users in the system.
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<User> getUsers() throws GitLabApiException { public List<User> getUsers() throws GitLabApiException {
Response response = get(Response.Status.OK, null, "users"); Response response = get(Response.Status.OK, getDefaultPerPageParam(), "users");
return (response.readEntity(new GenericType<List<User>>() { return (response.readEntity(new GenericType<List<User>>() {}));
}));
} }
/** /**
* Get a list of users using the specified page and per page settings. * Get a list of users using the specified page and per page settings.
* *
* GET /users * GET /users
* *
* @param page the page to get * @param page the page to get
* @param perPage the number of users per page * @param perPage the number of users per page
* @return the list of Users in the specified range * @return the list of Users in the specified range
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<User> getUsers(int page, int perPage) throws GitLabApiException { public List<User> getUsers(int page, int perPage) throws GitLabApiException {
Response response = get(Response.Status.OK, getPageQueryParams(page, perPage), "users");
return (response.readEntity(new GenericType<List<User>>() {}));
}
GitLabApiForm formData = new GitLabApiForm() /**
.withParam("page", page, false) * Get a Pager of users.
.withParam("per_page", perPage, false); *
Response response = get(Response.Status.OK, formData.asMap(), "users"); * GET /users
return (response.readEntity(new GenericType<List<User>>() { *
})); * @param itemsPerPage the number of Project instances that will be fetched per page
* @return a Pager of User
* @throws GitLabApiException if any exception occurs
*/
public Pager<User> getUsers(int itemsPerPage) throws GitLabApiException {
return (new Pager<User>(this, User.class, itemsPerPage, null, "users"));
} }
/** /**
* Get a single user. * Get a single user.
* *
* GET /users/:id * GET /users/:id
* *
* @param userId the ID of the user to get * @param userId the ID of the user to get
* @return the User instance for the specified user ID * @return the User instance for the specified user ID
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
...@@ -70,16 +77,47 @@ public class UserApi extends AbstractApi { ...@@ -70,16 +77,47 @@ public class UserApi extends AbstractApi {
* Search users by Email or username * Search users by Email or username
* *
* GET /users?search=:email_or_username * GET /users?search=:email_or_username
* *
* @param emailOrUsername the email or username to search for * @param emailOrUsername the email or username to search for
* @return the User List with the email or username like emailOrUsername * @return the User List with the email or username like emailOrUsername
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public List<User> findUsers(String emailOrUsername) throws GitLabApiException { public List<User> findUsers(String emailOrUsername) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm().withParam("search", emailOrUsername, true); GitLabApiForm formData = new GitLabApiForm().withParam("search", emailOrUsername, true).withParam(PER_PAGE_PARAM, getDefaultPerPage());
Response response = get(Response.Status.OK, formData.asMap(), "users"); Response response = get(Response.Status.OK, formData.asMap(), "users");
return (response.readEntity(new GenericType<List<User>>() { return (response.readEntity(new GenericType<List<User>>() {}));
})); }
/**
* Search users by Email or username in the specified page range.
*
* GET /users?search=:email_or_username
*
* @param emailOrUsername the email or username to search for
* @param page the page to get
* @param perPage the number of users per page
* @return the User List with the email or username like emailOrUsername in the specified page range
* @throws GitLabApiException if any exception occurs
*/
public List<User> findUsers(String emailOrUsername, int page, int perPage) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm().withParam("search", emailOrUsername, true).withParam(PAGE_PARAM, page).withParam(PER_PAGE_PARAM, perPage);
Response response = get(Response.Status.OK, formData.asMap(), "users");
return (response.readEntity(new GenericType<List<User>>() {}));
}
/**
* Search users by Email or username and return a Pager
*
* GET /users?search=:email_or_username
*
* @param emailOrUsername the email or username to search for
* @param itemsPerPage the number of Project instances that will be fetched per page
* @return the User Pager with the email or username like emailOrUsername
* @throws GitLabApiException if any exception occurs
*/
public Pager<User> findUsers(String emailOrUsername, int itemsPerPage) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm().withParam("search", emailOrUsername, true);
return (new Pager<User>(this, User.class, itemsPerPage, formData.asMap(), "users"));
} }
/** /**
...@@ -101,10 +139,10 @@ public class UserApi extends AbstractApi { ...@@ -101,10 +139,10 @@ public class UserApi extends AbstractApi {
* bio (optional) - User's bio * bio (optional) - User's bio
* admin (optional) - User is admin - true or false (default) * admin (optional) - User is admin - true or false (default)
* can_create_group (optional) - User can create groups - true or false * can_create_group (optional) - User can create groups - true or false
* *
* @param user the User instance with the user info to create * @param user the User instance with the user info to create
* @param password the password for the new user * @param password the password for the new user
* @param projectsLimit the maximum number of project * @param projectsLimit the maximum number of project
* @return created User instance * @return created User instance
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
...@@ -116,9 +154,9 @@ public class UserApi extends AbstractApi { ...@@ -116,9 +154,9 @@ public class UserApi extends AbstractApi {
/** /**
* Modifies an existing user. Only administrators can change attributes of a user. * Modifies an existing user. Only administrators can change attributes of a user.
* *
* PUT /users/:id * PUT /users/:id
* *
* email (required) - Email * email (required) - Email
* password (required) - Password * password (required) - Password
* username (required) - Username * username (required) - Username
...@@ -133,10 +171,10 @@ public class UserApi extends AbstractApi { ...@@ -133,10 +171,10 @@ public class UserApi extends AbstractApi {
* bio (optional) - User's bio * bio (optional) - User's bio
* admin (optional) - User is admin - true or false (default) * admin (optional) - User is admin - true or false (default)
* can_create_group (optional) - User can create groups - true or false * can_create_group (optional) - User can create groups - true or false
* *
* @param user the User instance with the user info to modify * @param user the User instance with the user info to modify
* @param password the new password for the user * @param password the new password for the user
* @param projectsLimit the maximum number of project * @param projectsLimit the maximum number of project
* @return the modified User instance * @return the modified User instance
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
...@@ -148,9 +186,9 @@ public class UserApi extends AbstractApi { ...@@ -148,9 +186,9 @@ public class UserApi extends AbstractApi {
/** /**
* Deletes a user. Available only for administrators. * Deletes a user. Available only for administrators.
* *
* DELETE /users/:id * DELETE /users/:id
* *
* @param userId the user ID to delete * @param userId the user ID to delete
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
...@@ -166,9 +204,9 @@ public class UserApi extends AbstractApi { ...@@ -166,9 +204,9 @@ public class UserApi extends AbstractApi {
/** /**
* Deletes a user. Available only for administrators. * Deletes a user. Available only for administrators.
* *
* DELETE /users/:id * DELETE /users/:id
* *
* @param user the User instance to delete * @param user the User instance to delete
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
...@@ -178,7 +216,7 @@ public class UserApi extends AbstractApi { ...@@ -178,7 +216,7 @@ public class UserApi extends AbstractApi {
/** /**
* Populate the REST form with data from the User instance. * Populate the REST form with data from the User instance.
* *
* @param user the User iunstance to populate the Form instance with * @param user the User iunstance to populate the Form instance with
* @param projectsLimit the maximum number of projects the user is allowed (optional) * @param projectsLimit the maximum number of projects the user is allowed (optional)
* @param password the password, required when creating a new user * @param password the password, required when creating a new user
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment