From 0ec24fcb78a835ba58d99e7713dcdbc0715bd91c Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Wed, 23 May 2018 19:26:16 +0800 Subject: [PATCH] Add permanent deletion support --- .../src/main/java/io/intercom/api/User.java | 30 ++++++++++++++- .../api/UserPermanentDeleteRequest.java | 37 +++++++++++++++++++ .../api/UserPermanentDeleteResponse.java | 33 +++++++++++++++++ .../test/java/io/intercom/api/UserTest.java | 7 ++++ .../resources/permanent_delete_response.json | 3 ++ 5 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 intercom-java/src/main/java/io/intercom/api/UserPermanentDeleteRequest.java create mode 100644 intercom-java/src/main/java/io/intercom/api/UserPermanentDeleteResponse.java create mode 100644 intercom-java/src/test/resources/permanent_delete_response.json diff --git a/intercom-java/src/main/java/io/intercom/api/User.java b/intercom-java/src/main/java/io/intercom/api/User.java index 402b09af..4964f5d5 100644 --- a/intercom-java/src/main/java/io/intercom/api/User.java +++ b/intercom-java/src/main/java/io/intercom/api/User.java @@ -55,13 +55,39 @@ public static User update(User user) throws InvalidException, AuthorizationExcep return DataResource.update(UserUpdate.buildFrom(user), "users", User.class); } - public static User delete(String id) + /** + * @deprecated Replaced by {@link #archive(String)}. Renamed for consistency with API language + */ + public static User delete(String id) { + return archive(id); + } + + public static User archive(String id) throws AuthorizationException, ClientException, ServerException, InvalidException, RateLimitException { return DataResource.delete(id, "users", User.class); } - public static User delete(Map params) + public static UserPermanentDeleteResponse permanentDelete(String id) throws AuthorizationException, ClientException, ServerException, InvalidException, RateLimitException { + + final URI uri = UriBuilder.newBuilder() + .path("user_delete_requests") + .build(); + return new HttpClient(uri) + .post(UserPermanentDeleteResponse.class, new UserPermanentDeleteRequest(id)); + } + + /** + * @deprecated Replaced by {@link #archive(Map)}. Renamed for consistency with API language + */ + @Deprecated + public static User delete(Map params) + throws AuthorizationException, ClientException, ServerException, InvalidException, RateLimitException { + return archive(params); + } + + public static User archive(Map params) + throws AuthorizationException, ClientException, ServerException, InvalidException, RateLimitException { return DataResource.delete(params, "users", User.class); } diff --git a/intercom-java/src/main/java/io/intercom/api/UserPermanentDeleteRequest.java b/intercom-java/src/main/java/io/intercom/api/UserPermanentDeleteRequest.java new file mode 100644 index 00000000..2d12d8b0 --- /dev/null +++ b/intercom-java/src/main/java/io/intercom/api/UserPermanentDeleteRequest.java @@ -0,0 +1,37 @@ +package io.intercom.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@SuppressWarnings("UnusedDeclaration") +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class UserPermanentDeleteRequest { + + @JsonProperty("intercom_user_id") + private String intercomUserId; + + public UserPermanentDeleteRequest() { + } + + public UserPermanentDeleteRequest(String intercomUserId) { + this.setIntercomUserId(intercomUserId); + } + + public String getIntercomUserId() { + return intercomUserId; + } + + public UserPermanentDeleteRequest setIntercomUserId(String intercomUserId) { + this.intercomUserId = intercomUserId; + return this; + } + + @Override + public String toString() { + return "UserPermanentlyDeleteResponse{" + + "intercomUserId='" + intercomUserId + '\'' + + "} " + super.toString(); + } +} diff --git a/intercom-java/src/main/java/io/intercom/api/UserPermanentDeleteResponse.java b/intercom-java/src/main/java/io/intercom/api/UserPermanentDeleteResponse.java new file mode 100644 index 00000000..d67fb2bf --- /dev/null +++ b/intercom-java/src/main/java/io/intercom/api/UserPermanentDeleteResponse.java @@ -0,0 +1,33 @@ +package io.intercom.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@SuppressWarnings("UnusedDeclaration") +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class UserPermanentDeleteResponse { + + @JsonProperty("id") + private String id; + + public UserPermanentDeleteResponse() { + } + + public String getId() { + return id; + } + + public UserPermanentDeleteResponse setId(String id) { + this.id = id; + return this; + } + + @Override + public String toString() { + return "UserPermanentDeleteResponse{" + + "id='" + id + '\'' + + "} " + super.toString(); + } +} diff --git a/intercom-java/src/test/java/io/intercom/api/UserTest.java b/intercom-java/src/test/java/io/intercom/api/UserTest.java index 45988b0c..5f839ff2 100644 --- a/intercom-java/src/test/java/io/intercom/api/UserTest.java +++ b/intercom-java/src/test/java/io/intercom/api/UserTest.java @@ -266,4 +266,11 @@ public void testBulkValidation() { assertTrue(e.getFirstError() != null); } } + + @Test + public void TestPermanentDelete() throws Exception{ + String json = load("permanent_delete_response.json"); + final UserPermanentDeleteResponse userPermanentDeleteResponse= mapper.readValue(json, UserPermanentDeleteResponse.class); + assertEquals("123456", userPermanentDeleteResponse.getId()); + } } diff --git a/intercom-java/src/test/resources/permanent_delete_response.json b/intercom-java/src/test/resources/permanent_delete_response.json new file mode 100644 index 00000000..025c2e40 --- /dev/null +++ b/intercom-java/src/test/resources/permanent_delete_response.json @@ -0,0 +1,3 @@ +{ + "id": 123456 +}