Commit a28e1d88 authored by Greg Messner's avatar Greg Messner
Browse files

Added method to upload user avatar (#314).

parent 251de6b8
...@@ -3,6 +3,7 @@ package org.gitlab4j.api; ...@@ -3,6 +3,7 @@ package org.gitlab4j.api;
import org.gitlab4j.api.GitLabApi.ApiVersion; import org.gitlab4j.api.GitLabApi.ApiVersion;
import org.gitlab4j.api.models.CustomAttribute; import org.gitlab4j.api.models.CustomAttribute;
import org.gitlab4j.api.models.ImpersonationToken; import org.gitlab4j.api.models.ImpersonationToken;
import org.gitlab4j.api.models.Project;
import org.gitlab4j.api.models.ImpersonationToken.Scope; import org.gitlab4j.api.models.ImpersonationToken.Scope;
import org.gitlab4j.api.models.SshKey; import org.gitlab4j.api.models.SshKey;
import org.gitlab4j.api.models.User; import org.gitlab4j.api.models.User;
...@@ -10,6 +11,8 @@ import org.gitlab4j.api.models.User; ...@@ -10,6 +11,8 @@ import org.gitlab4j.api.models.User;
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;
import java.io.File;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -995,4 +998,19 @@ public class UserApi extends AbstractApi { ...@@ -995,4 +998,19 @@ public class UserApi extends AbstractApi {
GitLabApiForm formData = new GitLabApiForm(); GitLabApiForm formData = new GitLabApiForm();
return (customAttributesEnabled ? formData.withParam("with_custom_attributes", true) : formData); return (customAttributesEnabled ? formData.withParam("with_custom_attributes", true) : formData);
} }
/**
* Uploads and sets the user's avatar for the specified user.
*
* <pre><code>PUT /users/:id</code></pre>
*
* @param userIdOrUsername the user in the form of an Integer(ID), String(username), or User instance
* @param avatarFile the File instance of the avatar file to upload
* @return the updated User instance
* @throws GitLabApiException if any exception occurs
*/
public User setUserAvatar(final Object userIdOrUsername, File avatarFile) throws GitLabApiException {
Response response = putUpload(Response.Status.OK, "avatar", avatarFile, "users", getUserIdOrUsername(userIdOrUsername));
return (response.readEntity(User.class));
}
} }
...@@ -9,6 +9,7 @@ import java.util.Map; ...@@ -9,6 +9,7 @@ import java.util.Map;
import org.gitlab4j.api.GitLabApi.ApiVersion; import org.gitlab4j.api.GitLabApi.ApiVersion;
import org.gitlab4j.api.models.Project; import org.gitlab4j.api.models.Project;
import org.gitlab4j.api.models.User;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.FixMethodOrder; import org.junit.FixMethodOrder;
...@@ -45,7 +46,8 @@ public class TestAvatarUpload { ...@@ -45,7 +46,8 @@ public class TestAvatarUpload {
TEST_PROXY_USERNAME = TestUtils.getProperty("TEST_PROXY_USERNAME"); TEST_PROXY_USERNAME = TestUtils.getProperty("TEST_PROXY_USERNAME");
TEST_PROXY_PASSWORD = TestUtils.getProperty("TEST_PROXY_PASSWORD"); TEST_PROXY_PASSWORD = TestUtils.getProperty("TEST_PROXY_PASSWORD");
} }
private static final String AVATAR_FILENAME = "avatar.png"; private static final String AVATAR_FILENAME = "avatar.png";
private static GitLabApi gitLabApi; private static GitLabApi gitLabApi;
...@@ -116,4 +118,16 @@ public class TestAvatarUpload { ...@@ -116,4 +118,16 @@ public class TestAvatarUpload {
assertNotNull(updatedProject); assertNotNull(updatedProject);
assertTrue(updatedProject.getAvatarUrl().endsWith(AVATAR_FILENAME)); assertTrue(updatedProject.getAvatarUrl().endsWith(AVATAR_FILENAME));
} }
@Test
public void testSetUserAvatar() throws GitLabApiException {
User user = gitLabApi.getUserApi().getCurrentUser();
assertNotNull(user);
File avatarFile = new File("src/test/resources/org/gitlab4j/api", AVATAR_FILENAME);
User updatedUser = gitLabApi.getUserApi().setUserAvatar(user, avatarFile);
assertNotNull(updatedUser);
assertTrue(updatedUser.getAvatarUrl().endsWith(AVATAR_FILENAME));
}
} }
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