From 4b877ddbcf945a7777658e29928621d031e7a4d2 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Tue, 2 Jan 2018 12:41:38 +0800 Subject: [PATCH] Add support for updating avatars for Users and Contacts/Leads --- .../src/main/java/io/intercom/api/Avatar.java | 7 ++++++- .../src/main/java/io/intercom/api/Contact.java | 9 +++++++++ .../src/main/java/io/intercom/api/User.java | 14 ++++++++++++++ .../src/test/java/io/intercom/api/UserTest.java | 13 +++++++++++-- intercom-java/src/test/resources/user.json | 3 ++- 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/intercom-java/src/main/java/io/intercom/api/Avatar.java b/intercom-java/src/main/java/io/intercom/api/Avatar.java index 7cfd9897..2fcd8a24 100644 --- a/intercom-java/src/main/java/io/intercom/api/Avatar.java +++ b/intercom-java/src/main/java/io/intercom/api/Avatar.java @@ -18,7 +18,7 @@ public class Avatar extends TypedData { @JsonProperty("image_url") private URI imageURL; - Avatar() { + public Avatar() { } public String getType() { @@ -29,6 +29,11 @@ public URI getImageURL() { return imageURL; } + public Avatar setImageURL(String imageURL) { + this.imageURL = URI.create(imageURL); + return this; + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/intercom-java/src/main/java/io/intercom/api/Contact.java b/intercom-java/src/main/java/io/intercom/api/Contact.java index f6aab6ba..df2d66e9 100644 --- a/intercom-java/src/main/java/io/intercom/api/Contact.java +++ b/intercom-java/src/main/java/io/intercom/api/Contact.java @@ -192,6 +192,7 @@ static ContactUpdate buildFrom(Contact c) { contactUpdate.name = c.getName(); contactUpdate.lastSeenIP = c.getLastSeenIP(); contactUpdate.customAttributes = c.getCustomAttributes(); + contactUpdate.avatar = c.getAvatar(); contactUpdate.lastRequestAt = c.getLastRequestAt(); contactUpdate.unsubscribedFromEmails = c.getUnsubscribedFromEmails(); return contactUpdate; @@ -219,6 +220,9 @@ static ContactUpdate buildFrom(Contact c) { @JsonProperty("last_seen_ip") private String lastSeenIP; + @JsonProperty("avatar") + private Avatar avatar; + @JsonIgnoreProperties(ignoreUnknown = false) @JsonProperty("custom_attributes") private Map customAttributes = Maps.newHashMap(); @@ -457,6 +461,11 @@ public Avatar getAvatar() { return avatar; } + public Contact setAvatar(Avatar avatar) { + this.avatar = avatar; + return this; + } + public long getCreatedAt() { return createdAt; } 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 6d86643a..39348562 100644 --- a/intercom-java/src/main/java/io/intercom/api/User.java +++ b/intercom-java/src/main/java/io/intercom/api/User.java @@ -113,6 +113,7 @@ static UserUpdate buildFrom(User user) { userUpdate.companyCollection = buildUserUpdateCompanies(user); } + userUpdate.avatar = user.getAvatar(); userUpdate.lastRequestAt = user.getLastRequestAt(); userUpdate.signedUpAt = user.getSignedUpAt(); userUpdate.unsubscribedFromEmails = user.getUnsubscribedFromEmails(); @@ -157,6 +158,9 @@ static List> validateAndConvertJobItems(List> @JsonProperty("last_seen_ip") private String lastSeenIp; + @JsonProperty("avatar") + private Avatar avatar; + @JsonIgnoreProperties(ignoreUnknown = false) @JsonProperty("custom_attributes") private Map customAttributes = Maps.newHashMap(); @@ -266,6 +270,11 @@ public Boolean isUpdateLastRequestAt() { public Boolean isNewSession() { return newSession; } + + public Avatar getAvatar() { + return avatar; + } + } @JsonProperty("type") @@ -424,6 +433,11 @@ public Avatar getAvatar() { return avatar; } + public User setAvatar(Avatar avatar) { + this.avatar = avatar; + return this; + } + public long getCreatedAt() { return createdAt; } 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 b37b55d3..6cd6f043 100644 --- a/intercom-java/src/test/java/io/intercom/api/UserTest.java +++ b/intercom-java/src/test/java/io/intercom/api/UserTest.java @@ -29,6 +29,8 @@ public void TestUserUpdateEmptyCompanies() throws Exception { @Test public void TestUserUpdate() throws Exception { + final Avatar avatar = new Avatar() + .setImageURL("http://example.com/256Wash.jpg"); final long now = System.currentTimeMillis() / 1000; final User user = new User() @@ -41,7 +43,8 @@ public void TestUserUpdate() throws Exception { .setUnsubscribedFromEmails(true) .setUpdateLastRequestAt(true) .setNewSession(true) - .setUserAgentData("user-agent"); + .setUserAgentData("user-agent") + .setAvatar(avatar); final User.UserUpdate userUpdate = User.UserUpdate.buildFrom(user); @@ -56,6 +59,7 @@ public void TestUserUpdate() throws Exception { assertEquals(true, userUpdate.isNewSession()); assertEquals("user-agent", userUpdate.getLastSeenUserAgent()); assertEquals(null, userUpdate.getType()); + assertEquals("http://example.com/256Wash.jpg", userUpdate.getAvatar().getImageURL().toString()); } @Test @@ -179,9 +183,14 @@ public void TestSerdes() throws Exception { assertEquals("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9", user.getUserAgentData()); assertEquals(1397574667L, user.getLastRequestAt()); assertEquals(1392731331L, user.getRemoteCreatedAt()); + assertEquals(1392731331L, user.getSignedUpAt()); assertEquals(1392734388L, user.getCreatedAt()); assertEquals(1392734388L, user.getUpdatedAt()); + final Avatar avatar = user.getAvatar(); + assertEquals("avatar", avatar.getType()); + assertEquals("http://example.org/128Wash.jpg", avatar.getImageURL().toString()); + final SegmentCollection segmentCollection = user.getSegmentCollection(); assertEquals("segment.list", segmentCollection.getType()); final List items = segmentCollection.getPage(); @@ -250,4 +259,4 @@ public void testBulkValidation() { assertTrue(e.getFirstError() != null); } } -} \ No newline at end of file +} diff --git a/intercom-java/src/test/resources/user.json b/intercom-java/src/test/resources/user.json index 66ee578d..cef8a269 100644 --- a/intercom-java/src/test/resources/user.json +++ b/intercom-java/src/test/resources/user.json @@ -6,6 +6,7 @@ "phone": "+1234567890", "name": "Hoban Washburne", "remote_created_at": 1392731331, + "signed_up_at": 1392731331, "updated_at": 1392734388, "session_count": 0, "last_seen_ip": "1.2.3.4", @@ -73,4 +74,4 @@ } ] } -} \ No newline at end of file +}