v1.1.0 Added slack service for sending alert in slack

master
Yan 7 months ago
parent 98676fa048
commit e4dd9db229

@ -6,6 +6,9 @@ app:
alert-subject: ""
javamail-config: ""
expected-result-file-path: ""
slack:
channel: ""
app-token: ""
htmlunit:
username: ""
password": ""

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>guerrilla</artifactId>
<version>1.0.1</version>
<version>1.1.0</version>
<name>guerrilla</name>
<description>Hit and Run</description>
<properties>
@ -16,6 +16,7 @@
<jsoup.version>1.19.1</jsoup.version>
<java.mail.version>1.6.2</java.mail.version>
<guava.version>33.4.7-jre</guava.version>
<slack-api-client.version>1.45.3</slack-api-client.version>
</properties>
<dependencyManagement>
@ -31,7 +32,11 @@
</dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>com.slack.api</groupId>
<artifactId>slack-api-client</artifactId>
<version>${slack-api-client.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
@ -64,7 +69,7 @@
<artifactId>javax.mail</artifactId>
<version>${java.mail.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>

@ -92,6 +92,9 @@ public class CaptureService {
@Autowired
private ObjectMapper objectMapper;
@Autowired
private SlackService slackService;
public HashMap<String, Object> convertStringToMap(String jsonString) throws IOException {
TypeReference<java.util.HashMap<String, Object>> ref = new TypeReference<>() {
@ -131,6 +134,9 @@ public class CaptureService {
Pair<Boolean, Boolean> 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());
}
}
}

@ -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);
}
}
}
Loading…
Cancel
Save