diff --git a/mattermost4j-core/src/main/java/net/bis5/mattermost/client4/MattermostClient.java b/mattermost4j-core/src/main/java/net/bis5/mattermost/client4/MattermostClient.java index 883b5b9e..b5864d42 100644 --- a/mattermost4j-core/src/main/java/net/bis5/mattermost/client4/MattermostClient.java +++ b/mattermost4j-core/src/main/java/net/bis5/mattermost/client4/MattermostClient.java @@ -452,6 +452,10 @@ public String getUserStatusesRoute() { return getUsersRoute() + "/status"; } + public String getUserProfileImageRoute(String userId) { + return getUserRoute(userId) + "/image"; + } + public String getSamlRoute() { return "/saml"; } @@ -697,7 +701,7 @@ public ApiResponse autocompleteUsers(String username, String e @Override public ApiResponse getProfileImage(String userId, String etag) { // XXX byte[]で返すの微妙・・・というかreadEntityでこけない? - return doApiGet(getUserRoute(userId) + "/image", etag, byte[].class); + return doApiGet(getUserProfileImageRoute(userId), etag, byte[].class); } private GenericType> stringMapType() { @@ -893,7 +897,7 @@ public ApiResponse setProfileImage(String userId, Path imageFilePath) { FileDataBodyPart body = new FileDataBodyPart("image", imageFilePath.toFile()); multiPart.bodyPart(body); - return doApiPostMultiPart(getUserRoute(userId) + "/image", multiPart).checkStatusOk(); + return doApiPostMultiPart(getUserProfileImageRoute(userId), multiPart).checkStatusOk(); } @Override @@ -946,6 +950,11 @@ public ApiResponse revokeAllActiveSessionForUser(String userId) { return doApiPost(getUserSessionsRoute(userId) + "/revoke/all", null).checkStatusOk(); } + @Override + public ApiResponse deleteProfileImage(String userId) { + return doApiDelete(getUserProfileImageRoute(userId)).checkStatusOk(); + } + // Team Section @Override diff --git a/mattermost4j-core/src/main/java/net/bis5/mattermost/client4/api/UserApi.java b/mattermost4j-core/src/main/java/net/bis5/mattermost/client4/api/UserApi.java index 27e4d19c..9d0214a4 100644 --- a/mattermost4j-core/src/main/java/net/bis5/mattermost/client4/api/UserApi.java +++ b/mattermost4j-core/src/main/java/net/bis5/mattermost/client4/api/UserApi.java @@ -493,4 +493,9 @@ default ApiResponse getUserAccessTokensAllUsers() { ApiResponse revokeAllActiveSessionForUser(String userId); + /** + * delete user profile image. + */ + ApiResponse deleteProfileImage(String userId); + } diff --git a/mattermost4j-core/src/test/java/net/bis5/mattermost/client4/MattermostApiTest.java b/mattermost4j-core/src/test/java/net/bis5/mattermost/client4/MattermostApiTest.java index 168b82e3..2ca7aac5 100644 --- a/mattermost4j-core/src/test/java/net/bis5/mattermost/client4/MattermostApiTest.java +++ b/mattermost4j-core/src/test/java/net/bis5/mattermost/client4/MattermostApiTest.java @@ -1150,6 +1150,21 @@ public void setUserProfileImage() throws URISyntaxException { assertThat(result, is(true)); } + @Test + public void deleteUserProfileImage() throws URISyntaxException { + Path image = Paths.get(getClass().getResource(EMOJI_CONSTRUCTION).toURI()); + ApiResponse uploadResult = + assertNoError(client.setProfileImage(th.basicUser().getId(), image)); + if (isNotSupportVersion("5.6.0", uploadResult)) { + return; + } + assertTrue(uploadResult.readEntity()); + + ApiResponse deleteResult = + assertNoError(client.deleteProfileImage(th.basicUser().getId())); + assertTrue(deleteResult.readEntity()); + } + @Test public void getUserByName() { String username = th.basicUser().getUsername();