Added dependencies on httpclient and json-simple
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c7539a7e Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c7539a7e Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c7539a7e Branch: refs/heads/master Commit: c7539a7e7ccb6b5a24f133b94ec641a29383446f Parents: 62e44a6 Author: Mike Kennedy <[email protected]> Authored: Sat May 30 23:28:50 2015 -0700 Committer: Claus Ibsen <[email protected]> Committed: Mon Jun 1 08:55:12 2015 +0200 ---------------------------------------------------------------------- components/camel-slack/pom.xml | 12 +++ .../camel/component/slack/SlackProducer.java | 57 +++++++++++++- .../component/slack/helper/SlackMessage.java | 79 +++++++++++++++++++- 3 files changed, 144 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/c7539a7e/components/camel-slack/pom.xml ---------------------------------------------------------------------- diff --git a/components/camel-slack/pom.xml b/components/camel-slack/pom.xml index 121826b..da75056 100644 --- a/components/camel-slack/pom.xml +++ b/components/camel-slack/pom.xml @@ -23,6 +23,18 @@ <artifactId>camel-core</artifactId> </dependency> + <dependency> + <groupId>com.googlecode.json-simple</groupId> + <artifactId>json-simple</artifactId> + <version>1.1.1</version> + </dependency> + + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>${httpclient4-version}</version> + </dependency> + <!-- test dependencies --> <dependency> <groupId>junit</groupId> http://git-wip-us.apache.org/repos/asf/camel/blob/c7539a7e/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java index f3a5b1c..455d0ad 100644 --- a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java +++ b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java @@ -1,4 +1,59 @@ package org.apache.camel.component.slack; -public class SlackProducer { +import org.apache.camel.CamelException; +import org.apache.camel.Exchange; +import org.apache.camel.component.slack.helper.SlackMessage; +import org.apache.camel.impl.DefaultProducer; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SlackProducer extends DefaultProducer { + + private static final transient Logger LOG = LoggerFactory.getLogger(SlackProducer.class); + + private SlackEndpoint slackEndpoint; + + /** + * Constuctor + * + * @param endpoint a SlackEndpoint + */ + public SlackProducer(SlackEndpoint endpoint) { + super(endpoint); + this.slackEndpoint = endpoint; + } + + @Override + public void process(Exchange exchange) throws Exception { + + // Create an HttpClient and Post object + HttpClient client = HttpClientBuilder.create().build(); + HttpPost httpPost = new HttpPost(slackEndpoint.getWebhookUrl()); + + // Build Helper object + SlackMessage slackMessage = new SlackMessage(); + slackMessage.setText(exchange.getIn().getBody(String.class)); + slackMessage.setChannel(slackEndpoint.getChannel()); + slackMessage.setUsername(slackEndpoint.getUsername()); + slackMessage.setIconUrl(slackEndpoint.getIconUrl()); + slackMessage.setIconEmoji(slackEndpoint.getIconEmoji()); + + // Set the post body + StringEntity body = new StringEntity(slackMessage.toString()); + + // Do the post + httpPost.setEntity(body); + + HttpResponse response = client.execute(httpPost); + + if (response.getStatusLine().getStatusCode() != 200) { + LOG.error("Error POSTing to Slack API: " + response.toString()); + throw new CamelException("Error POSTing to Slack API: " + response.toString()); + } + } } http://git-wip-us.apache.org/repos/asf/camel/blob/c7539a7e/components/camel-slack/src/main/java/org/apache/camel/component/slack/helper/SlackMessage.java ---------------------------------------------------------------------- diff --git a/components/camel-slack/src/main/java/org/apache/camel/component/slack/helper/SlackMessage.java b/components/camel-slack/src/main/java/org/apache/camel/component/slack/helper/SlackMessage.java index d63f68e..4cb0462 100644 --- a/components/camel-slack/src/main/java/org/apache/camel/component/slack/helper/SlackMessage.java +++ b/components/camel-slack/src/main/java/org/apache/camel/component/slack/helper/SlackMessage.java @@ -1,7 +1,80 @@ package org.apache.camel.component.slack.helper; -/** - * Created by mikek on 5/30/15. - */ +import org.json.simple.JSONObject; + +import java.util.HashMap; +import java.util.Map; + public class SlackMessage { + + private String text; + private String channel; + private String username; + private String iconUrl; + private String iconEmoji; + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getChannel() { + return channel; + } + + public void setChannel(String channel) { + this.channel = channel; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getIconUrl() { + return iconUrl; + } + + public void setIconUrl(String iconUrl) { + this.iconUrl = iconUrl; + } + + public String getIconEmoji() { + return iconEmoji; + } + + public void setIconEmoji(String iconEmoji) { + this.iconEmoji = iconEmoji; + } + + /** + * Returns a JSON string to be posted to the Slack API + * + * @return JSON string + */ + public String toString() { + + Map<String, String> jsonMap = new HashMap<String, String>(); + + // Put the values in a map + jsonMap.put("text", this.text); + jsonMap.put("channel", this.channel); + jsonMap.put("username", this.username); + jsonMap.put("icon_url", this.iconUrl); + jsonMap.put("icon_emoji", this.iconEmoji); + + // Generate a JSONObject + JSONObject jsonObject = new JSONObject(jsonMap); + + // Return the string based on the JSON Object + return JSONObject.toJSONString(jsonMap); + + } } +
