diff --git a/src/main/java/org/gitlab4j/api/UserApi.java b/src/main/java/org/gitlab4j/api/UserApi.java index 190cd6c95..94de754e0 100644 --- a/src/main/java/org/gitlab4j/api/UserApi.java +++ b/src/main/java/org/gitlab4j/api/UserApi.java @@ -1,6 +1,7 @@ package org.gitlab4j.api; import java.io.File; +import java.io.IOException; import java.util.Date; import java.util.List; import java.util.Objects; @@ -14,6 +15,7 @@ import org.gitlab4j.api.GitLabApi.ApiVersion; import org.gitlab4j.api.models.CustomAttribute; import org.gitlab4j.api.models.Email; +import org.gitlab4j.api.models.Exists; import org.gitlab4j.api.models.GpgKey; import org.gitlab4j.api.models.ImpersonationToken; import org.gitlab4j.api.models.ImpersonationToken.Scope; @@ -1413,4 +1415,24 @@ public void deactivateUser(Long userId) throws GitLabApiException { } post(Response.Status.CREATED, (Form) null, "users", userId, "deactivate"); } + + /** + * Check if the given user exists. + * + * <pre><code>GitLab Endpoint: POST /users/:username/exists</code></pre> + * + * @param username the name of the user to check + * @throws GitLabApiException if any exception occurs. + */ + public boolean exists(String username) throws GitLabApiException { + if (username == null) { + throw new RuntimeException("username cannot be null"); + } + try { + Response response = get(Response.Status.OK, null, getApiClient().getUrlWithBase("users", username, "exists")); + return response.readEntity(Exists.class).getExists(); + } catch (IOException e) { + throw new GitLabApiException(e); + } + } } diff --git a/src/main/java/org/gitlab4j/api/models/Exists.java b/src/main/java/org/gitlab4j/api/models/Exists.java new file mode 100644 index 000000000..5e68a5816 --- /dev/null +++ b/src/main/java/org/gitlab4j/api/models/Exists.java @@ -0,0 +1,24 @@ +package org.gitlab4j.api.models; + +import org.gitlab4j.api.utils.JacksonJson; + +import java.io.Serializable; + +public class Exists implements Serializable { + private static final long serialVersionUID = 1L; + + private Boolean exists; + + public Boolean getExists() { + return exists; + } + + public void setExists(Boolean exists) { + this.exists = exists; + } + + @Override + public String toString() { + return (JacksonJson.toJsonString(this)); + } +} diff --git a/src/test/java/org/gitlab4j/api/TestUserApi.java b/src/test/java/org/gitlab4j/api/TestUserApi.java index 1ac9ceb4f..4ebbafeed 100644 --- a/src/test/java/org/gitlab4j/api/TestUserApi.java +++ b/src/test/java/org/gitlab4j/api/TestUserApi.java @@ -606,6 +606,16 @@ public void testGpgKeysCurrentUser() throws GitLabApiException { assertNull(found); } + @Test + public void testUserExists() throws GitLabApiException { + User currentUser = gitLabApi.getUserApi().getCurrentUser(); + assertNotNull(currentUser); + assertEquals(TEST_USERNAME, currentUser.getUsername()); + + assertTrue(gitLabApi.getUserApi().exists(currentUser.getUsername())); + assertFalse(gitLabApi.getUserApi().exists("doesnotexist")); + } + public void testGetMemberships() throws GitLabApiException { User currentUser = gitLabApi.getUserApi().getCurrentUser(); assertNotNull(currentUser);