From ac5b9304c0883be622a9773cc2ea64ab3e77faaa Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Sun, 28 Oct 2018 13:14:39 +0800 Subject: [PATCH] Update webhook topics and add ping --- README.md | 28 ++++++++++++- .../java/io/intercom/api/Subscription.java | 41 ++++++++++++++++++- 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 27ca8fc0..30e72d3a 100644 --- a/README.md +++ b/README.md @@ -582,13 +582,37 @@ Subscription subscription = new Subscription(); subscription.setUrl(new URI("https://example.org/webhooks/1")); subscription.addTopic(Subscription.Topic.USER_CREATED); subscription.addTopic(Subscription.Topic.USER_TAG_CREATED); -subscription.addTopic(Subscription.Topic.COMPANY); -subscription.setAppID("pi3243fa"); Subscription.create(subscription); +// create a subscribtion and subscribe to events +Subscription subscription = new Subscription(); +subscription.addTopic(Subscription.Topic.EVENT_CREATED); +Map> metadata = new HashMap>(); +ArrayList events = new ArrayList(Arrays.asList("cart")); +metadata.put("event_names", events); +subscription.setMetadata(metadata); +subscription.setMetadata(metadata); +Subscription.create(subscription); + +// update a subscription +Subscription subscription = Subscription.find("nsub_60ca7690-4020-11e4-b789-4961958e51bd"); +subscription.addTopic(Subscription.Topic.COMPANY_CREATED); +Subscription updatedSubscription = Subscription.update(subscription); + +// delete a subscription +Subscription subscription = new Subscription(); +subscription.setId("nsub_83793feb-8394-4cb6-91d6-68ef4dd08a8e"); +Subscription deletedSubscription = Subscription.delete(subscription); + // find a subscription subscription = Subscription.find("nsub_60ca7690-4020-11e4-b789-4961958e51bd"); +// ping a subscription by ID +Subscription.ping("nsub_60ca7690-4020-11e4-b789-4961958e51bd"); +// ping a subscription by subscription object +subscription = Subscription.find("nsub_60ca7690-4020-11e4-b789-4961958e51bd"); +Subscription.ping(subscription); + // list subscriptions SubscriptionCollection list = Subscription.list(); while(list.hasNext()) { diff --git a/intercom-java/src/main/java/io/intercom/api/Subscription.java b/intercom-java/src/main/java/io/intercom/api/Subscription.java index 9612a9f0..4510e438 100644 --- a/intercom-java/src/main/java/io/intercom/api/Subscription.java +++ b/intercom-java/src/main/java/io/intercom/api/Subscription.java @@ -42,6 +42,15 @@ public static SubscriptionCollection list() throws InvalidException, Authorizati return DataResource.list(SENTINEL, "subscriptions", SubscriptionCollection.class); } + public static Subscription ping(String id) throws InvalidException, AuthorizationException { + final HttpClient resource = new HttpClient(UriBuilder.newBuilder().path("subscriptions").path(id).path("ping").build()); + return resource.post(Subscription.class, null); + } + + public static Subscription ping(Subscription subscription) throws InvalidException, AuthorizationException { + return ping(subscription.getId()); + } + public static NotificationCollection sentFeed(String id) throws InvalidException, AuthorizationException { final URI feedURI = UriBuilder.newBuilder() .path("subscriptions") @@ -72,8 +81,16 @@ public static class Topic { private final static String CONVERSATION_NAME = "conversation"; + private final static String CONVERSATION_PART_NAME = "conversation_part"; + private static final String USER_NAME = "user"; + private static final String CONTACT_NAME = "contact"; + + private static final String VISITOR_NAME = "visitor"; + + private static final String EVENT_NAME = "event"; + public static final Topic PING = new Topic("ping", SUBTYPE_WILDCARD); public static final Topic COMPANY = new Topic(COMPANY_NAME, SUBTYPE_WILDCARD); @@ -92,20 +109,42 @@ public static class Topic { public static final Topic CONVERSATION_ADMIN_CLOSED = new Topic(CONVERSATION_NAME, "admin.closed"); - public static final Topic CONVERSATION_ADMIN_OPEN = new Topic(CONVERSATION_NAME, "admin.open"); + public static final Topic CONVERSATION_ADMIN_OPEN = new Topic(CONVERSATION_NAME, "admin.opened"); public static final Topic CONVERSATION_ADMIN_NOTED = new Topic(CONVERSATION_NAME, "admin.noted"); + public static final Topic CONVERSATION_ADMIN_SINGLE_CREATED = new Topic(CONVERSATION_NAME, "admin.single.created"); + + public static final Topic CONVERSATION_PART_TAG_CREATED= new Topic(CONVERSATION_PART_NAME, "tag.created"); + public static final Topic USER = new Topic(USER_NAME, SUBTYPE_WILDCARD); public static final Topic USER_CREATED = new Topic(USER_NAME, "created"); + public static final Topic USER_DELETED = new Topic(USER_NAME, "deleted"); + + public static final Topic USER_EMAIL_UPDATED = new Topic(USER_NAME, "email.updated"); + public static final Topic USER_UNSUBSCRIBED = new Topic(USER_NAME, "unsubscribed"); public static final Topic USER_TAG_CREATED = new Topic(USER_NAME, "tag.created"); public static final Topic USER_TAG_DELETED = new Topic(USER_NAME, "tag.deleted"); + public static final Topic CONTACT = new Topic(CONTACT_NAME, SUBTYPE_WILDCARD); + + public static final Topic CONTACT_ADDED_EMAIL = new Topic(CONTACT_NAME, "added_email"); + + public static final Topic CONTACT_CREATED= new Topic(CONTACT_NAME, "created"); + + public static final Topic CONTACT_SIGNED_UP = new Topic(CONTACT_NAME, "signed_up"); + + public static final Topic VISITOR = new Topic(VISITOR_NAME, SUBTYPE_WILDCARD); + + public static final Topic VISITOR_SIGNED_UP = new Topic(VISITOR_NAME, "signed_up"); + + public static final Topic EVENT_CREATED = new Topic(EVENT_NAME, "created"); + public static final Topic ALL_TOPIC = valueOf("all"); public static Topic valueOf(String type) throws IllegalArgumentException {