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);
+
+    }
 }
+

Reply via email to