diff --git a/empty-conf/springboot.yml b/empty-conf/springboot.yml
index 1fc3e6b..2ea8498 100644
--- a/empty-conf/springboot.yml
+++ b/empty-conf/springboot.yml
@@ -6,6 +6,9 @@ app:
alert-subject: ""
javamail-config: ""
expected-result-file-path: ""
+ slack:
+ channel: ""
+ app-token: ""
htmlunit:
username: ""
password": ""
diff --git a/pom.xml b/pom.xml
index 032e11a..71a3355 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.example
guerrilla
- 1.0.1
+ 1.1.0
guerrilla
Hit and Run
@@ -16,6 +16,7 @@
1.19.1
1.6.2
33.4.7-jre
+ 1.45.3
@@ -31,7 +32,11 @@
-
+
+ com.slack.api
+ slack-api-client
+ ${slack-api-client.version}
+
org.springframework.boot
spring-boot-starter
@@ -64,7 +69,7 @@
javax.mail
${java.mail.version}
-
+
com.fasterxml.jackson.core
jackson-core
diff --git a/src/main/java/com/example/guerrilla/service/CaptureService.java b/src/main/java/com/example/guerrilla/service/CaptureService.java
index 61a09da..dc0fca9 100644
--- a/src/main/java/com/example/guerrilla/service/CaptureService.java
+++ b/src/main/java/com/example/guerrilla/service/CaptureService.java
@@ -92,6 +92,9 @@ public class CaptureService {
@Autowired
private ObjectMapper objectMapper;
+
+ @Autowired
+ private SlackService slackService;
public HashMap convertStringToMap(String jsonString) throws IOException {
TypeReference> ref = new TypeReference<>() {
@@ -131,6 +134,9 @@ public class CaptureService {
Pair sendEmailResult = Pair.of(Boolean.TRUE, emailService.sendEmail(fromAddress,
smtpPassword, toAddresses, alertSubject, contentBuilder.toString()));
logger.info("sendEmailResult: {}", sendEmailResult);
+ if (sendEmailResult.equals(Pair.of(Boolean.TRUE,Boolean.TRUE))) {
+ slackService.sendMessage(contentBuilder.toString());
+ }
}
}
diff --git a/src/main/java/com/example/guerrilla/service/SlackService.java b/src/main/java/com/example/guerrilla/service/SlackService.java
new file mode 100644
index 0000000..8b87a8a
--- /dev/null
+++ b/src/main/java/com/example/guerrilla/service/SlackService.java
@@ -0,0 +1,58 @@
+package com.example.guerrilla.service;
+
+import java.io.IOException;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import com.slack.api.Slack;
+import com.slack.api.methods.MethodsClient;
+import com.slack.api.methods.SlackApiException;
+import com.slack.api.methods.request.chat.ChatPostMessageRequest;
+import com.slack.api.methods.response.chat.ChatPostMessageResponse;
+import com.slack.api.model.Message;
+
+@Service
+public class SlackService {
+
+ private static final Logger logger = LoggerFactory.getLogger(SlackService.class);
+
+ @Value("${app.slack.app-token}")
+ private String token;
+
+ @Value("${app.slack.channel}")
+ private String channel;
+
+ public void sendMessage(String content) {
+ if (StringUtils.isEmpty(token) || StringUtils.isEmpty(channel)) {
+ logger.info("slack app token or channel not defined!");
+ return;
+ }
+ Slack slack = Slack.getInstance();
+
+ // Initialize an API Methods client with the given token
+ MethodsClient methods = slack.methods(token);
+
+ // Build a request object
+ ChatPostMessageRequest request = ChatPostMessageRequest.builder().channel(channel).text(content).build();
+
+ // Get a response as a Java object
+ try {
+ ChatPostMessageResponse response = methods.chatPostMessage(request);
+ logger.info("response: {}", response);
+ if (response.isOk()) {
+ Message postedMessage = response.getMessage();
+ logger.info("postedMessage: {}", postedMessage);
+ } else {
+ String errorCode = response.getError();
+ logger.info("errorCode: {}", errorCode);
+ }
+ } catch (IOException | SlackApiException e) {
+ logger.error("sendMessage error!", e);
+ }
+
+ }
+}